#include <bits/stdc++.h>
using namespace std;
constexpr int maxn = 8002;
int wolne[maxn], biuro[maxn], online[maxn];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n,k,t; cin >> n >> k >> t;
string s; cin >> s; s = '#'+s;
for(int i=1; i<=n; i++)
{
wolne[i]=wolne[i-1]; biuro[i]=biuro[i-1]; online[i]=online[i-1];
if(s[i] == '3') wolne[i]++;
else if(s[i] == '2') online[i]++;
else biuro[i]++;
}
int ret = -1;
if(biuro[n] <= k)
{
int act = wolne[n]+biuro[n];
act += min(k-biuro[n],online[n]);
ret = max(ret, act);
}
for(int m=2*t+1; m<=n; m++)
{
for(int i=m; i<=n; i++)
{
int lf = k-(biuro[n]-(biuro[i-t]-biuro[i-m+t]));
lf -= ((online[i]-online[i-t])+(online[i-m+t]-online[i-m]));
if(lf < 0) continue;
int tmp = (online[n]-online[i])+online[i-m];
int act = ((wolne[n]-wolne[i])+wolne[i-m]);
act += ((biuro[n]-biuro[i])+biuro[i-m]);
act += min(lf, tmp);
ret = max(ret, act);
}
}
cout << ret << '\n';
}
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 | #include <bits/stdc++.h> using namespace std; constexpr int maxn = 8002; int wolne[maxn], biuro[maxn], online[maxn]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k,t; cin >> n >> k >> t; string s; cin >> s; s = '#'+s; for(int i=1; i<=n; i++) { wolne[i]=wolne[i-1]; biuro[i]=biuro[i-1]; online[i]=online[i-1]; if(s[i] == '3') wolne[i]++; else if(s[i] == '2') online[i]++; else biuro[i]++; } int ret = -1; if(biuro[n] <= k) { int act = wolne[n]+biuro[n]; act += min(k-biuro[n],online[n]); ret = max(ret, act); } for(int m=2*t+1; m<=n; m++) { for(int i=m; i<=n; i++) { int lf = k-(biuro[n]-(biuro[i-t]-biuro[i-m+t])); lf -= ((online[i]-online[i-t])+(online[i-m+t]-online[i-m])); if(lf < 0) continue; int tmp = (online[n]-online[i])+online[i-m]; int act = ((wolne[n]-wolne[i])+wolne[i-m]); act += ((biuro[n]-biuro[i])+biuro[i-m]); act += min(lf, tmp); ret = max(ret, act); } } cout << ret << '\n'; } |
English