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