#include<bits/stdc++.h> using namespace std; typedef long long ll; #define fi first #define se second const int N=8005; int n,k,t; int p[4][N]; int main(){ ios::sync_with_stdio(false);cin.tie(0); cin >> n >> k >> t; for(int i=1; i<=n ;i++){ char c;cin >> c; for(int j=1; j<=3 ;j++) p[j][i]=p[j][i-1]; p[c-'0'][i]++; } int ans=-1; { int miss=p[1][n]; if(miss<=k) ans=min(n,p[3][n]+(k-miss)); } for(int l=t; l<=n-t ;l++){ for(int r=l; r<=n-t ;r++){ int miss=p[1][l]+(p[1][n]-p[1][r]); miss+=(p[2][l]-p[2][l-t]); miss+=(p[2][r+t]-p[2][r]); if(miss<=k){ ans=max(ans,min(p[3][l-t]+p[3][n]-p[3][r+t]+(k-miss),l+n-r-t-t)); } } } cout << ans << '\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 | #include<bits/stdc++.h> using namespace std; typedef long long ll; #define fi first #define se second const int N=8005; int n,k,t; int p[4][N]; int main(){ ios::sync_with_stdio(false);cin.tie(0); cin >> n >> k >> t; for(int i=1; i<=n ;i++){ char c;cin >> c; for(int j=1; j<=3 ;j++) p[j][i]=p[j][i-1]; p[c-'0'][i]++; } int ans=-1; { int miss=p[1][n]; if(miss<=k) ans=min(n,p[3][n]+(k-miss)); } for(int l=t; l<=n-t ;l++){ for(int r=l; r<=n-t ;r++){ int miss=p[1][l]+(p[1][n]-p[1][r]); miss+=(p[2][l]-p[2][l-t]); miss+=(p[2][r+t]-p[2][r]); if(miss<=k){ ans=max(ans,min(p[3][l-t]+p[3][n]-p[3][r+t]+(k-miss),l+n-r-t-t)); } } } cout << ans << '\n'; } |