#include <bits/stdc++.h> using namespace std; #define st first #define nd second #define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) int solve() { int n,k,t; cin>>n>>k>>t; string s; cin>>s; int n1=0,n2=0,n3=0; for(auto x:s){ if(x=='1')n1++; if(x=='2')n2++; if(x=='3')n3++; } if(n1<=k) return min(n3+k,n); int best_res=-1; for(int i=0;i<n-(2*t-1)-1;i++){ int in_start=i,in_end=t-1+i,out_start=t+i,out_end=2*t-1+i; int missed=0; int active=0; for(int j=0;j<in_start;j++){ if(s[j]=='1')missed++; if(s[j]=='3' || s[j]=='1')active++; } for(int j=in_start;j<=out_end;j++){ if(s[j]!='3')missed++; } for(int j=out_end+1;j<n;j++){ if(s[j]=='1')missed++; if(s[j]=='3' || s[j]=='1')active++; } for(int j=0;out_end+j+1<n;j++){ if(s[out_start+j]!='3')missed--; if(s[out_end+j+1]=='2')missed++; if(s[out_end+j+1]=='3'||s[out_end+j+1]=='1')active--; if(missed<=k){best_res=max(best_res,active+k-missed);break;} } } return best_res; } int main() { fast; cout<<solve()<<'\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 | #include <bits/stdc++.h> using namespace std; #define st first #define nd second #define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) int solve() { int n,k,t; cin>>n>>k>>t; string s; cin>>s; int n1=0,n2=0,n3=0; for(auto x:s){ if(x=='1')n1++; if(x=='2')n2++; if(x=='3')n3++; } if(n1<=k) return min(n3+k,n); int best_res=-1; for(int i=0;i<n-(2*t-1)-1;i++){ int in_start=i,in_end=t-1+i,out_start=t+i,out_end=2*t-1+i; int missed=0; int active=0; for(int j=0;j<in_start;j++){ if(s[j]=='1')missed++; if(s[j]=='3' || s[j]=='1')active++; } for(int j=in_start;j<=out_end;j++){ if(s[j]!='3')missed++; } for(int j=out_end+1;j<n;j++){ if(s[j]=='1')missed++; if(s[j]=='3' || s[j]=='1')active++; } for(int j=0;out_end+j+1<n;j++){ if(s[out_start+j]!='3')missed--; if(s[out_end+j+1]=='2')missed++; if(s[out_end+j+1]=='3'||s[out_end+j+1]=='1')active--; if(missed<=k){best_res=max(best_res,active+k-missed);break;} } } return best_res; } int main() { fast; cout<<solve()<<'\n'; } |