#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,k,t;
char x;
cin>>n>>k>>t;
vector<int> pre,pre2;
pre.push_back(0);
pre2.push_back(0);
for(int i=1;i<=n;i++)
{
cin>>x;
int curr=int(x)-48;
if(curr==2)
{
pre.push_back(pre[i-1]+1);
pre2.push_back(pre2[i-1]);
}
else if(curr==1)
{
pre.push_back(pre[i-1]);
pre2.push_back(pre2[i-1]+1);
}
else
{
pre.push_back(pre[i-1]);
pre2.push_back(pre2[i-1]);
}
}
if(pre2[n]<=k)
{
cout<<n-max(0,(pre[n]-k+pre2[n]));
return 0;
}
int ma=-1;
for(int i=t+1;i<=n-t;i++)
{
for(int j=i;j<=n-t;j++)
{
int val=pre2[i-1]+pre2[n]-pre2[j]+pre[i-1]-pre[i-t-1]+pre[j+t]-pre[j];
if(val>k) continue;
int val2=pre[i-t-1]+pre[n]-pre[j+t];
ma=max(ma,i-t-1+n-j-t-max(0,(val2-k+val)));
}
}
cout<<ma;
}
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 main() { ios_base::sync_with_stdio(0); cin.tie(0); int n,k,t; char x; cin>>n>>k>>t; vector<int> pre,pre2; pre.push_back(0); pre2.push_back(0); for(int i=1;i<=n;i++) { cin>>x; int curr=int(x)-48; if(curr==2) { pre.push_back(pre[i-1]+1); pre2.push_back(pre2[i-1]); } else if(curr==1) { pre.push_back(pre[i-1]); pre2.push_back(pre2[i-1]+1); } else { pre.push_back(pre[i-1]); pre2.push_back(pre2[i-1]); } } if(pre2[n]<=k) { cout<<n-max(0,(pre[n]-k+pre2[n])); return 0; } int ma=-1; for(int i=t+1;i<=n-t;i++) { for(int j=i;j<=n-t;j++) { int val=pre2[i-1]+pre2[n]-pre2[j]+pre[i-1]-pre[i-t-1]+pre[j+t]-pre[j]; if(val>k) continue; int val2=pre[i-t-1]+pre[n]-pre[j+t]; ma=max(ma,i-t-1+n-j-t-max(0,(val2-k+val))); } } cout<<ma; } |
English