#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';
}
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'; } |
English