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