#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 8010
char buf[MAX];
int n,k,t;
int ile[4][MAX];
int ile1(int i,int j) { return ile[1][j]-ile[1][i]; }
int ile2(int i,int j) { return ile[2][j]-ile[2][i]; }
int ile3(int i,int j) { return ile[3][j]-ile[3][i]; }
int ile12(int i,int j) { return ile1(i,j) + ile2(i,j); }
int ile13(int i,int j) { return ile1(i,j) + ile3(i,j); }
int main() {
scanf("%d %d %d %s",&n,&k,&t, buf);
for(int k =1; k<=3;k++)
for(int i=1;i<=n+1;i++) ile[k][i] = ile[k][i-1] + (buf[i-1] == '0' + k?1:0);
int result = -1;
if (ile1(0,n) <= k) result = n - max(ile12(0,n) - k, 0);
for(int w=0;w+2*t<=n;w++) {
for(int p=w+t;p+t<=n;p++) {
if(ile1(0,w) + ile12(w,w+t) + ile12(p,p+t) + ile1(p+t,n) <= k) {
int kn = k - (ile1(0,w) + ile12(w,w+t) + ile12(p,p+t) + ile1(p+t,n));
int r = ile13(0,w) + ile13(p+t,n) + min(kn, ile2(0,w) + ile2(p+t,n));
//printf("w:%d p:%d r:%d\n",w,p,r);
result = max(result, r);
}
}
}
printf("%d\n", result);
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 31 32 33 34 35 36 37 38 39 | #include <cstdio> #include <algorithm> using namespace std; #define MAX 8010 char buf[MAX]; int n,k,t; int ile[4][MAX]; int ile1(int i,int j) { return ile[1][j]-ile[1][i]; } int ile2(int i,int j) { return ile[2][j]-ile[2][i]; } int ile3(int i,int j) { return ile[3][j]-ile[3][i]; } int ile12(int i,int j) { return ile1(i,j) + ile2(i,j); } int ile13(int i,int j) { return ile1(i,j) + ile3(i,j); } int main() { scanf("%d %d %d %s",&n,&k,&t, buf); for(int k =1; k<=3;k++) for(int i=1;i<=n+1;i++) ile[k][i] = ile[k][i-1] + (buf[i-1] == '0' + k?1:0); int result = -1; if (ile1(0,n) <= k) result = n - max(ile12(0,n) - k, 0); for(int w=0;w+2*t<=n;w++) { for(int p=w+t;p+t<=n;p++) { if(ile1(0,w) + ile12(w,w+t) + ile12(p,p+t) + ile1(p+t,n) <= k) { int kn = k - (ile1(0,w) + ile12(w,w+t) + ile12(p,p+t) + ile1(p+t,n)); int r = ile13(0,w) + ile13(p+t,n) + min(kn, ile2(0,w) + ile2(p+t,n)); //printf("w:%d p:%d r:%d\n",w,p,r); result = max(result, r); } } } printf("%d\n", result); return 0; } |
English