#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define INFL 1000000000000000099LL
ll n,q,m,b,c,d,k,t;
char a;
vector<ll>pr1={0},pr2={0},pr3={0};
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>k>>t;
for(ll i=0;i<n;i++){
cin>>a;
pr1.pb(pr1.back());
pr2.pb(pr2.back());
pr3.pb(pr3.back());
if(a=='1'){
pr1.back()++;
}
else if(a=='2'){
pr2.back()++;
}
else{
pr3.back()++;
}
}
ll bst=-1;
if(k>=pr1.back()){
bst=min(n,pr3.back()+k);
}
for(ll i = 1;i+2*t-1<=n;i++){
for(ll j=i+t;j+t-1<=n;j++){
ll opusz=0;
opusz+=pr1[i+t-1]+pr1[j+t-1]-pr1[i-1]-pr1[j-1]+pr2[i+t-1]+pr2[j+t-1]-pr2[i-1]-pr2[j-1];
ll poz=k-opusz;
ll l1=pr1[i-1]+pr1[n]-pr1[j+t-1],l2=pr2[i-1]+pr2[n]-pr2[j+t-1],l3=pr3[i-1]+pr3[n]-pr3[j+t-1];
poz-=l1;
ll akwyn=l1+l3+min(poz,l2);
if(poz>=0)
bst=max(bst,akwyn);
}
}
cout<<bst;
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 | #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define MOD 1000000009 #define INF 1000000019 #define INFL 1000000000000000099LL ll n,q,m,b,c,d,k,t; char a; vector<ll>pr1={0},pr2={0},pr3={0}; int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>n>>k>>t; for(ll i=0;i<n;i++){ cin>>a; pr1.pb(pr1.back()); pr2.pb(pr2.back()); pr3.pb(pr3.back()); if(a=='1'){ pr1.back()++; } else if(a=='2'){ pr2.back()++; } else{ pr3.back()++; } } ll bst=-1; if(k>=pr1.back()){ bst=min(n,pr3.back()+k); } for(ll i = 1;i+2*t-1<=n;i++){ for(ll j=i+t;j+t-1<=n;j++){ ll opusz=0; opusz+=pr1[i+t-1]+pr1[j+t-1]-pr1[i-1]-pr1[j-1]+pr2[i+t-1]+pr2[j+t-1]-pr2[i-1]-pr2[j-1]; ll poz=k-opusz; ll l1=pr1[i-1]+pr1[n]-pr1[j+t-1],l2=pr2[i-1]+pr2[n]-pr2[j+t-1],l3=pr3[i-1]+pr3[n]-pr3[j+t-1]; poz-=l1; ll akwyn=l1+l3+min(poz,l2); if(poz>=0) bst=max(bst,akwyn); } } cout<<bst; return 0; } |
English