#include<bits/stdc++.h>
using namespace std;
const int MAXN = 8e3 + 7;
int prefd[MAXN];
int prefb[MAXN];
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, k, t;
cin >> n >> k >> t;
int z = 0;
for(int i = 1; i <= n ; i++){
char typc;
cin >> typc;
int typ = typc-'0';
if(typ == 1){
prefb[i] = 1;
z++;
}
else if(typ == 2){
prefd[i] = 1;
z++;
}
prefb[i] += prefb[i-1];
prefd[i] += prefd[i-1];
}
int wynik = -1;
if(prefd[n] >= z-k){
wynik = n-max(0, z-k);
cout << wynik << "\n";
return 0;
}
int zd = prefd[n];
int zad, a, b;
for(int i = t; i <= n ; i++){
for(int j = i; j+t <= n ; j = j+1){
zad = z-k -prefb[j]+prefb[i-1]-prefd[j]+prefd[i-1];
a = i-t-1;
b = j+t+1;
if(a > -1 && b < n+2 && prefd[a]+zd-prefd[b-1] >= zad){
wynik = max(wynik, a+(n-b+1)-max(0, zad));
}
}
}
cout << wynik << "\n";
return 0;
}
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 44 45 46 47 48 49 50 51 | #include<bits/stdc++.h> using namespace std; const int MAXN = 8e3 + 7; int prefd[MAXN]; int prefb[MAXN]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n, k, t; cin >> n >> k >> t; int z = 0; for(int i = 1; i <= n ; i++){ char typc; cin >> typc; int typ = typc-'0'; if(typ == 1){ prefb[i] = 1; z++; } else if(typ == 2){ prefd[i] = 1; z++; } prefb[i] += prefb[i-1]; prefd[i] += prefd[i-1]; } int wynik = -1; if(prefd[n] >= z-k){ wynik = n-max(0, z-k); cout << wynik << "\n"; return 0; } int zd = prefd[n]; int zad, a, b; for(int i = t; i <= n ; i++){ for(int j = i; j+t <= n ; j = j+1){ zad = z-k -prefb[j]+prefb[i-1]-prefd[j]+prefd[i-1]; a = i-t-1; b = j+t+1; if(a > -1 && b < n+2 && prefd[a]+zd-prefd[b-1] >= zad){ wynik = max(wynik, a+(n-b+1)-max(0, zad)); } } } cout << wynik << "\n"; return 0; } |
English