#include <bits/stdc++.h>
using namespace std;
int sumy_biuro[8001], sumy_zdalne[8001];
int main() {
ios_base::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int n, k, t, wynik=-1;
string s;
cin >> n >> k >> t >> s;
for (int i=1; i<=n; i++) {
sumy_zdalne[i] = sumy_zdalne[i-1];
sumy_biuro[i] = sumy_biuro[i-1];
if (s[i-1] == '2') {sumy_zdalne[i]++;}
else if (s[i-1] == '1') {sumy_biuro[i]++;}
}
if (sumy_biuro[n] <= k) {
wynik = n-min(sumy_zdalne[n], k-sumy_biuro[n]);
}
for (int i=t+1; i<=n-t; i++) {
for (int j=i; j<=n-t; j++) {
int stracone_zdalne = (sumy_zdalne[i-1] - sumy_zdalne[i-t-1]) + (sumy_zdalne[j+t] - sumy_zdalne[j]);
int stracone_biuro = sumy_biuro[i-1] + sumy_biuro[n] - sumy_biuro[j];
int reszta = min(sumy_zdalne[n] - (sumy_zdalne[j+t] - sumy_zdalne[i-t-1]), sumy_zdalne[n] - (k - stracone_zdalne - stracone_biuro));
if (stracone_zdalne + stracone_biuro <= k) {
wynik = max(wynik, n - ((j+t - (i-t-1)) + reszta));
}
}
}
cout << wynik;
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 | #include <bits/stdc++.h> using namespace std; int sumy_biuro[8001], sumy_zdalne[8001]; int main() { ios_base::sync_with_stdio(0); cout.tie(0); cin.tie(0); int n, k, t, wynik=-1; string s; cin >> n >> k >> t >> s; for (int i=1; i<=n; i++) { sumy_zdalne[i] = sumy_zdalne[i-1]; sumy_biuro[i] = sumy_biuro[i-1]; if (s[i-1] == '2') {sumy_zdalne[i]++;} else if (s[i-1] == '1') {sumy_biuro[i]++;} } if (sumy_biuro[n] <= k) { wynik = n-min(sumy_zdalne[n], k-sumy_biuro[n]); } for (int i=t+1; i<=n-t; i++) { for (int j=i; j<=n-t; j++) { int stracone_zdalne = (sumy_zdalne[i-1] - sumy_zdalne[i-t-1]) + (sumy_zdalne[j+t] - sumy_zdalne[j]); int stracone_biuro = sumy_biuro[i-1] + sumy_biuro[n] - sumy_biuro[j]; int reszta = min(sumy_zdalne[n] - (sumy_zdalne[j+t] - sumy_zdalne[i-t-1]), sumy_zdalne[n] - (k - stracone_zdalne - stracone_biuro)); if (stracone_zdalne + stracone_biuro <= k) { wynik = max(wynik, n - ((j+t - (i-t-1)) + reszta)); } } } cout << wynik; return 0; } |
English