#include <iostream> using namespace std; const int stala=8010; int ile_jedynek[stala]; int ile_dwojek[stala]; int ile_trojek[stala]; int tab[stala]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ile,k,t; cin>>ile>>k>>t; for(int i=1;i<=ile;i++){ ile_jedynek[i]=ile_jedynek[i-1]; ile_dwojek[i]=ile_dwojek[i-1]; ile_trojek[i]=ile_trojek[i-1]; char a; cin>>a; tab[i]=a-'0'; if(tab[i]==1){ ile_jedynek[i]++; } if(tab[i]==2){ ile_dwojek[i]++; } if(tab[i]==3){ ile_trojek[i]++; } } int wyn=-1; for(int i=1;i<=ile;i++){ for(int j=i+(2*t);j<=ile;j++){ int p1=i+t-1; int p2=j-t+1; int suma=ile_jedynek[p1]-ile_jedynek[i-1]; suma+=ile_dwojek[p1]-ile_dwojek[i-1]; suma+=ile_jedynek[j]-ile_jedynek[p2-1]; suma+=ile_dwojek[j]-ile_dwojek[p2-1]; int ile_zostalo=k-suma; int res=0; ile_zostalo-=ile_jedynek[i-1]; ile_zostalo-=(ile_jedynek[ile]-ile_jedynek[j]); res+=ile_jedynek[i-1]; res+=(ile_jedynek[ile]-ile_jedynek[j]); if(ile_zostalo<0){ continue; } res+=ile_trojek[i-1]; res+=(ile_trojek[ile]-ile_trojek[j]); res+=min(ile_zostalo,ile_dwojek[i-1]+ile_dwojek[ile]-ile_dwojek[j]); wyn=max(wyn,res); } } if(ile_jedynek[ile]<=k){ wyn=max(wyn,ile_jedynek[ile]+min(ile_dwojek[ile],k-ile_jedynek[ile])+ile_trojek[ile]); } cout<<wyn<<"\n"; 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> using namespace std; const int stala=8010; int ile_jedynek[stala]; int ile_dwojek[stala]; int ile_trojek[stala]; int tab[stala]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ile,k,t; cin>>ile>>k>>t; for(int i=1;i<=ile;i++){ ile_jedynek[i]=ile_jedynek[i-1]; ile_dwojek[i]=ile_dwojek[i-1]; ile_trojek[i]=ile_trojek[i-1]; char a; cin>>a; tab[i]=a-'0'; if(tab[i]==1){ ile_jedynek[i]++; } if(tab[i]==2){ ile_dwojek[i]++; } if(tab[i]==3){ ile_trojek[i]++; } } int wyn=-1; for(int i=1;i<=ile;i++){ for(int j=i+(2*t);j<=ile;j++){ int p1=i+t-1; int p2=j-t+1; int suma=ile_jedynek[p1]-ile_jedynek[i-1]; suma+=ile_dwojek[p1]-ile_dwojek[i-1]; suma+=ile_jedynek[j]-ile_jedynek[p2-1]; suma+=ile_dwojek[j]-ile_dwojek[p2-1]; int ile_zostalo=k-suma; int res=0; ile_zostalo-=ile_jedynek[i-1]; ile_zostalo-=(ile_jedynek[ile]-ile_jedynek[j]); res+=ile_jedynek[i-1]; res+=(ile_jedynek[ile]-ile_jedynek[j]); if(ile_zostalo<0){ continue; } res+=ile_trojek[i-1]; res+=(ile_trojek[ile]-ile_trojek[j]); res+=min(ile_zostalo,ile_dwojek[i-1]+ile_dwojek[ile]-ile_dwojek[j]); wyn=max(wyn,res); } } if(ile_jedynek[ile]<=k){ wyn=max(wyn,ile_jedynek[ile]+min(ile_dwojek[ile],k-ile_jedynek[ile])+ile_trojek[ile]); } cout<<wyn<<"\n"; return 0; } |