#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; } |
English