#include <bits/stdc++.h>
using namespace std;
#define int long long
char s[8007];
int t1[8007];
int t2[8007];
int t3[8007];
int p1(int a, int b){
if(a>b){
return 0;
}
if(a<0) a=1;
if(b<0) return 0;
return t1[b]-t1[a-1];
}
int p2(int a, int b){
if(a>b){
return 0;
}
return t2[b]-t2[a-1];
}
int p3(int a, int b){
if(a>b){
return 0;
}
return t3[b]-t3[a-1];
}
int32_t main()
{
int n, m, i, j, a, b, k, t, w=-1;
cin >> n >> k >> t;
cin >> s;
for(i=1; i<=n; i++){
t1[i]=t1[i-1];
t2[i]=t2[i-1];
t3[i]=t3[i-1];
if(s[i-1]=='1'){
t1[i]++;
}
if(s[i-1]=='2'){
t2[i]++;
}
if(s[i-1]=='3'){
t3[i]++;
}
}
b=max(p1(1,n)+p2(1,n)-k, (int)0);
if(p1(1,n)<=k){
w=n-b;
}
for(i=1; i<=n; i++){
for(j=i+2*t; j<=n; j++){
if(p1(1,i+t-1)+p1(j-t+1,n)+p2(i, i+t-1)+p2(j-t+1, j)<=k){
a=k-(p1(1,i+t-1)+p1(j-t+1,n)+p2(i, i+t-1)+p2(j-t+1, j));
w=max(w, n-j+i-1-max((b-p1(i+t, j-t)-p2(i+t, j-t)), (int)0));
}
}
}
cout << w << '\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 63 64 65 66 67 | #include <bits/stdc++.h> using namespace std; #define int long long char s[8007]; int t1[8007]; int t2[8007]; int t3[8007]; int p1(int a, int b){ if(a>b){ return 0; } if(a<0) a=1; if(b<0) return 0; return t1[b]-t1[a-1]; } int p2(int a, int b){ if(a>b){ return 0; } return t2[b]-t2[a-1]; } int p3(int a, int b){ if(a>b){ return 0; } return t3[b]-t3[a-1]; } int32_t main() { int n, m, i, j, a, b, k, t, w=-1; cin >> n >> k >> t; cin >> s; for(i=1; i<=n; i++){ t1[i]=t1[i-1]; t2[i]=t2[i-1]; t3[i]=t3[i-1]; if(s[i-1]=='1'){ t1[i]++; } if(s[i-1]=='2'){ t2[i]++; } if(s[i-1]=='3'){ t3[i]++; } } b=max(p1(1,n)+p2(1,n)-k, (int)0); if(p1(1,n)<=k){ w=n-b; } for(i=1; i<=n; i++){ for(j=i+2*t; j<=n; j++){ if(p1(1,i+t-1)+p1(j-t+1,n)+p2(i, i+t-1)+p2(j-t+1, j)<=k){ a=k-(p1(1,i+t-1)+p1(j-t+1,n)+p2(i, i+t-1)+p2(j-t+1, j)); w=max(w, n-j+i-1-max((b-p1(i+t, j-t)-p2(i+t, j-t)), (int)0)); } } } cout << w << '\n'; return 0; } |
English