File tree 1 file changed +7
-30
lines changed
1 file changed +7
-30
lines changed Original file line number Diff line number Diff line change 3
3
using namespace std ;
4
4
using ll = long long ;
5
5
6
- int count (string const & S) {
7
- int const n = S.size ();
8
- int ans = 0 ;
9
- int i = 0 ;
10
- int l = 0 ;
11
- int m = 0 ;
12
- while (i < n) {
13
- if (S[i] == ' 1' ) {
14
- if (m == 0 ) l = i;
15
- ++m;
16
- } else if (m > 0 ) {
17
- int r = n - l - m;
18
- int k = min ({ n - l, n - r, l + m, m + r });
19
- ans = max (ans, k);
20
- m = 0 ;
21
- }
22
- ++i;
23
- }
24
- if (m > 0 ) {
25
- int r = n - l - m;
26
- int k = min ({ n - l, n - r, l + m, m + r });
27
- ans = max (ans, k);
28
- }
29
- return ans;
30
- }
31
-
32
6
int solve (string& S) {
33
- int ans = count (S);
34
- for (int i = 0 ; i < S.size (); ++i) {
35
- S[i] = S[i] == ' 0' ? ' 1' : ' 0' ;
7
+ const int N = S.size ();
8
+ int ans = N;
9
+ for (int i = 0 ; i + 1 < N; ++i) {
10
+ if (S[i] != S[i+1 ]) {
11
+ int m = max (i+1 ,N-(i+1 ));
12
+ ans = min (ans, m);
13
+ }
36
14
}
37
- ans = max (ans, count (S));
38
15
return ans;
39
16
}
40
17
You can’t perform that action at this time.
0 commit comments