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
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define fi first
#define se second
const int N=8005;
int n,k,t;
int p[4][N];
int main(){
	ios::sync_with_stdio(false);cin.tie(0);
	cin >> n >> k >> t;
	for(int i=1; i<=n ;i++){
		char c;cin >> c;
		for(int j=1; j<=3 ;j++) p[j][i]=p[j][i-1];
		p[c-'0'][i]++;
	}
	int ans=-1;
	{
		int miss=p[1][n];
		if(miss<=k) ans=min(n,p[3][n]+(k-miss));
	}
	for(int l=t; l<=n-t ;l++){
		for(int r=l; r<=n-t ;r++){
			int miss=p[1][l]+(p[1][n]-p[1][r]);
			miss+=(p[2][l]-p[2][l-t]);
			miss+=(p[2][r+t]-p[2][r]);
			if(miss<=k){
				ans=max(ans,min(p[3][l-t]+p[3][n]-p[3][r+t]+(k-miss),l+n-r-t-t));
			}
			
		}
	}
	cout << ans << '\n';
}