#include <bits/stdc++.h>
using namespace std;
int sp[8001];
int sp2[8001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cerr.tie(0);
int n,k,t;
cin>>n>>k>>t;
int k2 = k*-1;
string s;
cin>>s;
sp[0] = 0;
sp2[0] = 0;
for(int i = 1;i<=n;i++)
{
sp[i] = sp[i-1];
if(s[i-1] == '1' || s[i-1] == '2')
{
sp[i]++;
k2++;
}
sp2[i] = sp2[i-1];
if(s[i-1] == '2')
{
sp2[i]++;
}
}
int mx = -1;
for(int i = 0;i<n;i++)
{
for(int j = i+t;j<=n-t;j++)
{
if(sp[j] - sp[i+t] + sp2[i] + sp2[n] - sp2[j+t] >= k2)
{
int c = max(0,k2 - (sp[j] - sp[i+t]));
mx = max(mx,n-(((j+t)-i)+c));
}
}
}
if(sp2[n] >= k2)
{
mx = max(mx,n-k2);
}
cout<<min(mx,n)<<"\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 46 47 48 49 50 51 | #include <bits/stdc++.h> using namespace std; int sp[8001]; int sp2[8001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cerr.tie(0); int n,k,t; cin>>n>>k>>t; int k2 = k*-1; string s; cin>>s; sp[0] = 0; sp2[0] = 0; for(int i = 1;i<=n;i++) { sp[i] = sp[i-1]; if(s[i-1] == '1' || s[i-1] == '2') { sp[i]++; k2++; } sp2[i] = sp2[i-1]; if(s[i-1] == '2') { sp2[i]++; } } int mx = -1; for(int i = 0;i<n;i++) { for(int j = i+t;j<=n-t;j++) { if(sp[j] - sp[i+t] + sp2[i] + sp2[n] - sp2[j+t] >= k2) { int c = max(0,k2 - (sp[j] - sp[i+t])); mx = max(mx,n-(((j+t)-i)+c)); } } } if(sp2[n] >= k2) { mx = max(mx,n-k2); } cout<<min(mx,n)<<"\n"; } |
English