#include <bits/stdc++.h> using namespace std; int tab[8008]; int sum1[8008]; int sum2[8008]; int dp[8008]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N,k,t; char Z; cin>>N>>k>>t; for(int i=1;i<=N;i++){ cin>>Z; tab[i]=Z-48; if(Z=='1'){sum1[i]++;} if(Z=='2'){sum2[i]++;} sum1[i]+=sum1[i-1]; sum2[i]+=sum2[i-1]; } if(sum1[N]<=k){cout<<N-max(0,sum1[N]+sum2[N]-k);return 0;} int wyn; int MAX=-1; for(int i=1;i<=N-t-t;i++){ for(int j=i+t+1;j<=N-t+1;j++){ wyn=sum1[i+t-1]+sum2[i+t-1]-sum2[i-1]; wyn+=sum1[N]-sum1[j-1]+sum2[j+t-1]-sum2[j-1]; if(wyn>k){continue;} MAX=max(MAX,N-t-t-sum1[N]-sum2[N]+k-(j-i-t-(sum1[j-1]-sum1[i+t-1])-(sum2[j-1]-sum2[i+t-1]))); } } cout<<MAX; 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 | #include <bits/stdc++.h> using namespace std; int tab[8008]; int sum1[8008]; int sum2[8008]; int dp[8008]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N,k,t; char Z; cin>>N>>k>>t; for(int i=1;i<=N;i++){ cin>>Z; tab[i]=Z-48; if(Z=='1'){sum1[i]++;} if(Z=='2'){sum2[i]++;} sum1[i]+=sum1[i-1]; sum2[i]+=sum2[i-1]; } if(sum1[N]<=k){cout<<N-max(0,sum1[N]+sum2[N]-k);return 0;} int wyn; int MAX=-1; for(int i=1;i<=N-t-t;i++){ for(int j=i+t+1;j<=N-t+1;j++){ wyn=sum1[i+t-1]+sum2[i+t-1]-sum2[i-1]; wyn+=sum1[N]-sum1[j-1]+sum2[j+t-1]-sum2[j-1]; if(wyn>k){continue;} MAX=max(MAX,N-t-t-sum1[N]-sum2[N]+k-(j-i-t-(sum1[j-1]-sum1[i+t-1])-(sum2[j-1]-sum2[i+t-1]))); } } cout<<MAX; return 0;} |