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