#include <bits/stdc++.h> using namespace std; int sb[8'002]; int sz[8'002]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k, t; int ans = -1; string tab; cin >> n >> k >> t >> tab; for (int i = 0; i < n; i++) { sb[i+1] += sb[i]; sz[i+1] += sz[i]; sb[i+1] += (!!(tab[i] == '1')); sz[i+1] += (!!(tab[i] == '2')); } if (sb[n] <= k) { ans = n - max(0, sz[n] - k); } for (int a = 0; a <= n; a++) { for (int b = a + t; b + t <= n; b++) { int miss = sb[a + t] + sb[n] - sb[b] + sz[a+t] - sz[a] + sz[b + t] - sz[b]; if (miss > k)continue; ans = max(ans, a + n - b - t - max(0, sz[a] + sz[n] - sz[b+t] - k + miss)); } } cout << ans << '\n'; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <bits/stdc++.h> using namespace std; int sb[8'002]; int sz[8'002]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, k, t; int ans = -1; string tab; cin >> n >> k >> t >> tab; for (int i = 0; i < n; i++) { sb[i+1] += sb[i]; sz[i+1] += sz[i]; sb[i+1] += (!!(tab[i] == '1')); sz[i+1] += (!!(tab[i] == '2')); } if (sb[n] <= k) { ans = n - max(0, sz[n] - k); } for (int a = 0; a <= n; a++) { for (int b = a + t; b + t <= n; b++) { int miss = sb[a + t] + sb[n] - sb[b] + sz[a+t] - sz[a] + sz[b + t] - sz[b]; if (miss > k)continue; ans = max(ans, a + n - b - t - max(0, sz[a] + sz[n] - sz[b+t] - k + miss)); } } cout << ans << '\n'; } |