1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h>
using namespace std;
const int MX=8008;
int n,k,t,a[MX],o[MX];
char s[MX];
int main() {
  scanf("%d%d%d",&n,&k,&t);
  scanf("%s",s+1);
  for (int i=1; i<=n; i++) {
    a[i]=a[i-1]+int(s[i]=='2');
    o[i]=o[i-1]+int(s[i]=='1');
  }
  int best=-1;
  if (o[n]<=k) best=n-max(o[n]+a[n]-k,0);
  for (int i=1; i<=n; i++) for (int j=i+2*t; j<=n; j++) {
    int cur=o[n]-o[j-t]+o[i+t-1]+a[i+t-1]-a[i-1]+a[j]-a[j-t];
    if (cur<=k) best=max(best,i-1+n-j-max(0,a[i-1]+a[n]-a[j]-(k-cur)));
  }
  printf("%d\n",best);
  return 0;
}