#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
cin.tie(0)->sync_with_stdio(0);
int n, k, t;
cin >> n >> k >> t;
vector<int> spotkania(n+1), spotkaniaZdalne(n+1);
int s = 0;
for(int i = 1; i <= n; ++i){
char a;
cin >> a;
if(a <= '2'){
spotkania[i] = 1;
s++;
}
if(a == '2')spotkaniaZdalne[i] = 1;
spotkania[i] += spotkania[i-1];
spotkaniaZdalne[i] += spotkaniaZdalne[i-1];
}
s -= k;
s = max(0,s);
int wynik = -1;
for(int i = t + 1; i <= n - t; ++i){
for(int j = i; j <= n - t; ++j){
if(s <= spotkaniaZdalne[i-t-1] + spotkania[j] - spotkania[i-1] + spotkaniaZdalne[n] - spotkaniaZdalne[j+t]){
wynik = max(wynik, i - t - 1 + n - j - t - s + spotkania[j] - spotkania[i-1]);
}
}
}
if(spotkaniaZdalne[n] >= s){
wynik = max(wynik, n-s);
}
cout<<wynik<<endl;
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 | #include <bits/stdc++.h> using namespace std; typedef long long LL; int main(){ cin.tie(0)->sync_with_stdio(0); int n, k, t; cin >> n >> k >> t; vector<int> spotkania(n+1), spotkaniaZdalne(n+1); int s = 0; for(int i = 1; i <= n; ++i){ char a; cin >> a; if(a <= '2'){ spotkania[i] = 1; s++; } if(a == '2')spotkaniaZdalne[i] = 1; spotkania[i] += spotkania[i-1]; spotkaniaZdalne[i] += spotkaniaZdalne[i-1]; } s -= k; s = max(0,s); int wynik = -1; for(int i = t + 1; i <= n - t; ++i){ for(int j = i; j <= n - t; ++j){ if(s <= spotkaniaZdalne[i-t-1] + spotkania[j] - spotkania[i-1] + spotkaniaZdalne[n] - spotkaniaZdalne[j+t]){ wynik = max(wynik, i - t - 1 + n - j - t - s + spotkania[j] - spotkania[i-1]); } } } if(spotkaniaZdalne[n] >= s){ wynik = max(wynik, n-s); } cout<<wynik<<endl; return 0; } |
English