Skip to content

Commit 1610861

Browse files
committed
atcoder/abc083D (feedback from editorial)
1 parent 8126597 commit 1610861

File tree

1 file changed

+7
-30
lines changed

1 file changed

+7
-30
lines changed

atcoder/abc083/D/main.cpp

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,15 @@
33
using namespace std;
44
using ll = long long;
55

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-
326
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+
}
3614
}
37-
ans = max(ans, count(S));
3815
return ans;
3916
}
4017

0 commit comments

Comments
 (0)