#include <cstdio> #include <algorithm> using namespace std; int main() { int n, k, t, l = 0, r = 0, m = -1; scanf("%i %i %i ", &n, &k, &t); int L[n+1], R[n+1]; for (int i = 0; i<n; i++) { L[i] = l, R[i] = r; int c = getchar(); c=='1'? l++: c=='2'? r++: 0; } L[n] = l, R[n] = r; if (l<=k) { printf("%i\n", n-max(r+l-k, 0)); return 0; } for (int i = 0; i<=n-2*t-1; i++) for (int j = i+2*t+1; j<=n; j++) { int o = l-L[j-t]+L[i+t] + R[j]-R[j-t]+R[i+t]-R[i]; if (o<=k) m = max(m, n-j+i-max(r-R[j]+R[i]+o-k, 0)); } printf("%i\n", m); return 0; }
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 | #include <cstdio> #include <algorithm> using namespace std; int main() { int n, k, t, l = 0, r = 0, m = -1; scanf("%i %i %i ", &n, &k, &t); int L[n+1], R[n+1]; for (int i = 0; i<n; i++) { L[i] = l, R[i] = r; int c = getchar(); c=='1'? l++: c=='2'? r++: 0; } L[n] = l, R[n] = r; if (l<=k) { printf("%i\n", n-max(r+l-k, 0)); return 0; } for (int i = 0; i<=n-2*t-1; i++) for (int j = i+2*t+1; j<=n; j++) { int o = l-L[j-t]+L[i+t] + R[j]-R[j-t]+R[i+t]-R[i]; if (o<=k) m = max(m, n-j+i-max(r-R[j]+R[i]+o-k, 0)); } printf("%i\n", m); return 0; } |