#include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,k,t; cin >> n >> k >> t; vector<char> wej(n+1); vector<array<int,2>> sum_pref(n+1); int sp=0; for (int i = 1; i<=n; i++){ cin >> wej[i]; if (wej[i]!='3')sp++; sum_pref[i]=sum_pref[i-1]; if (wej[i]=='1')sum_pref[i][0]++; if (wej[i]=='2')sum_pref[i][1]++; } sum_pref.push_back(sum_pref.back()); auto sum = [&](int a, int b, int ind){return sum_pref[b][ind]-sum_pref[a-1][ind];}; int mx=-1; for (int i = t+1; i<=n; i++){ for (int j = i; j+t<=n; j++){ int d=sum(i,j,0)+sum(i,j,1)+sum(1,i-t-1,1)+sum(j+t+1,n,1); if (d>=sp-k){ mx=max(mx,n-(j-i+1)-2*t-max(0,sp-k-sum(i,j,0)-sum(i,j,1))); } } } if (sum(1,n,1)>=sp-k){ mx=max(mx,n-max(0,(sp-k))); } cout << mx << '\n'; }
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 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,k,t; cin >> n >> k >> t; vector<char> wej(n+1); vector<array<int,2>> sum_pref(n+1); int sp=0; for (int i = 1; i<=n; i++){ cin >> wej[i]; if (wej[i]!='3')sp++; sum_pref[i]=sum_pref[i-1]; if (wej[i]=='1')sum_pref[i][0]++; if (wej[i]=='2')sum_pref[i][1]++; } sum_pref.push_back(sum_pref.back()); auto sum = [&](int a, int b, int ind){return sum_pref[b][ind]-sum_pref[a-1][ind];}; int mx=-1; for (int i = t+1; i<=n; i++){ for (int j = i; j+t<=n; j++){ int d=sum(i,j,0)+sum(i,j,1)+sum(1,i-t-1,1)+sum(j+t+1,n,1); if (d>=sp-k){ mx=max(mx,n-(j-i+1)-2*t-max(0,sp-k-sum(i,j,0)-sum(i,j,1))); } } } if (sum(1,n,1)>=sp-k){ mx=max(mx,n-max(0,(sp-k))); } cout << mx << '\n'; } |