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
#include <bits/stdc++.h>
using namespace std;

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	int n,k,t;
	cin >> n >> k >> t;
	vector<char> wej(n+1);
	vector<array<int,2>> sum_pref(n+1);
	int sp=0;
	for (int i = 1; i<=n; i++){
		cin >> wej[i];
		if (wej[i]!='3')sp++;
		sum_pref[i]=sum_pref[i-1];
		if (wej[i]=='1')sum_pref[i][0]++;
		if (wej[i]=='2')sum_pref[i][1]++;
	}
	sum_pref.push_back(sum_pref.back());
	auto sum = [&](int a, int b, int ind){return sum_pref[b][ind]-sum_pref[a-1][ind];};
	int mx=-1;
	for (int i = t+1; i<=n; i++){
		for (int j = i; j+t<=n; j++){
			int d=sum(i,j,0)+sum(i,j,1)+sum(1,i-t-1,1)+sum(j+t+1,n,1);
			if (d>=sp-k){
				mx=max(mx,n-(j-i+1)-2*t-max(0,sp-k-sum(i,j,0)-sum(i,j,1)));
			}
		}
	}
	if (sum(1,n,1)>=sp-k){
		mx=max(mx,n-max(0,(sp-k)));
	}
	cout << mx << '\n';
}