#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,k,t,x,wyn = -1;
char zn;
cin>>n>>k>>t;
char dia[n+1];
for(int i=1;i<=n;i++){
cin>>dia[i];
}
int jeden[n+1];
int dwa[n+1];
int trzy[n+1];
jeden[0]=0;
dwa[0]=0;
trzy[0]=0;
for(int i=1;i<=n;i++){
jeden[i]=jeden[i-1];
dwa[i]=dwa[i-1];
trzy[i]=trzy[i-1];
if(dia[i]=='1'){
jeden[i]++;
}else if(dia[i]=='2'){
dwa[i]++;
}else{
trzy[i]++;
}
}
if(jeden[n]<=k){
wyn = max( wyn, min(n,trzy[n]+k) );
}
for(int i=1;i+2*t-1<=n;i++){
for(int j=i+t;j+t-1<=n;j++){
x = jeden[i+t-1] + jeden[n] - jeden[j-1];
x += dwa[i+t-1] - dwa[i-1] + dwa[j+t-1] - dwa[j-1];
if(x<=k){
wyn = max( wyn, trzy[n]-trzy[j+t-1] + trzy[i-1] + min(k-x,dwa[i-1]+dwa[n]-dwa[j+t-1]) );
}
}
}
cout<<wyn;
}
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 52 53 54 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k,t,x,wyn = -1; char zn; cin>>n>>k>>t; char dia[n+1]; for(int i=1;i<=n;i++){ cin>>dia[i]; } int jeden[n+1]; int dwa[n+1]; int trzy[n+1]; jeden[0]=0; dwa[0]=0; trzy[0]=0; for(int i=1;i<=n;i++){ jeden[i]=jeden[i-1]; dwa[i]=dwa[i-1]; trzy[i]=trzy[i-1]; if(dia[i]=='1'){ jeden[i]++; }else if(dia[i]=='2'){ dwa[i]++; }else{ trzy[i]++; } } if(jeden[n]<=k){ wyn = max( wyn, min(n,trzy[n]+k) ); } for(int i=1;i+2*t-1<=n;i++){ for(int j=i+t;j+t-1<=n;j++){ x = jeden[i+t-1] + jeden[n] - jeden[j-1]; x += dwa[i+t-1] - dwa[i-1] + dwa[j+t-1] - dwa[j-1]; if(x<=k){ wyn = max( wyn, trzy[n]-trzy[j+t-1] + trzy[i-1] + min(k-x,dwa[i-1]+dwa[n]-dwa[j+t-1]) ); } } } cout<<wyn; } |
English