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
40
41
42
43
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
int pa[8003],pb[8003];
int qb(int l,int r)
{
	return pa[r]+pb[r]-pa[l]-pb[l];
}
int main()
{
	ios_base::sync_with_stdio(0);
	int n,k,t;
	string s;
	cin>>n>>k>>t>>s;
	for(int i=0;i<n;i++) pa[i+1]=pa[i]+(s[i]=='1');
	for(int i=0;i<n;i++) pb[i+1]=pb[i]+(s[i]=='2');
	int mx=-1;
	for(int i=0;i<n;i++) for(int j=i+t*2;j<=n;j++)
	{
		int bd=qb(i,i+t)+qb(j-t,j)+pa[i]+pa[n]-pa[j];
		if(bd>k) continue;
		int ts=i+n-j;
		int tg=pb[i]+pb[n]-pb[j];
		tg=max(0,tg-k+bd);
		mx=max(mx,ts-tg);
	}
	if(qb(0,n)<=k) mx=n;
	else if(pa[n]<=k) mx=max(mx,n-qb(0,n)+k);
	cout<<mx<<endl;
	return 0;
}