#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
int pa[8003],pb[8003];
int qb(int l,int r)
{
return pa[r]+pb[r]-pa[l]-pb[l];
}
int main()
{
ios_base::sync_with_stdio(0);
int n,k,t;
string s;
cin>>n>>k>>t>>s;
for(int i=0;i<n;i++) pa[i+1]=pa[i]+(s[i]=='1');
for(int i=0;i<n;i++) pb[i+1]=pb[i]+(s[i]=='2');
int mx=-1;
for(int i=0;i<n;i++) for(int j=i+t*2;j<=n;j++)
{
int bd=qb(i,i+t)+qb(j-t,j)+pa[i]+pa[n]-pa[j];
if(bd>k) continue;
int ts=i+n-j;
int tg=pb[i]+pb[n]-pb[j];
tg=max(0,tg-k+bd);
mx=max(mx,ts-tg);
}
if(qb(0,n)<=k) mx=n;
else if(pa[n]<=k) mx=max(mx,n-qb(0,n)+k);
cout<<mx<<endl;
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 35 36 37 38 39 40 41 42 43 | #include<set> #include<map> #include<queue> #include<vector> #include<algorithm> #include<bits/stdc++.h> #define pr pair #define f first #define s second #define ll long long #define mp make_pair #define pll pr<ll,ll> #define pii pr<int,int> #define piii pr<int,pii> using namespace std; int pa[8003],pb[8003]; int qb(int l,int r) { return pa[r]+pb[r]-pa[l]-pb[l]; } int main() { ios_base::sync_with_stdio(0); int n,k,t; string s; cin>>n>>k>>t>>s; for(int i=0;i<n;i++) pa[i+1]=pa[i]+(s[i]=='1'); for(int i=0;i<n;i++) pb[i+1]=pb[i]+(s[i]=='2'); int mx=-1; for(int i=0;i<n;i++) for(int j=i+t*2;j<=n;j++) { int bd=qb(i,i+t)+qb(j-t,j)+pa[i]+pa[n]-pa[j]; if(bd>k) continue; int ts=i+n-j; int tg=pb[i]+pb[n]-pb[j]; tg=max(0,tg-k+bd); mx=max(mx,ts-tg); } if(qb(0,n)<=k) mx=n; else if(pa[n]<=k) mx=max(mx,n-qb(0,n)+k); cout<<mx<<endl; return 0; } |
English