#include <iostream>
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int n, k, t, nb, pnb, loss, temp = -1;
auto sum=new int[n][3];
sum[0][0]=0;
sum[0][1]=0;
sum[0][2]=0;
std::cin >> n >> k >> t;
std::string str;
std::cin >> str;
for (int i=1; i<=n; i++) {
sum[i][0]=sum[i-1][0];
sum[i][1]=sum[i-1][1];
sum[i][2]=sum[i-1][2];
sum[i][str[i-1]-'1']+=1;
//std::cout << i << ".\t" << sum[i][0] << '\t' << sum[i][1] << '\t' << sum[i][2] << '\n';
}
if (sum[n][0] <= k) {
std::cout << (n-std::max(0, sum[n][0]+sum[n][1]-k)) << '\n';
return 0;
}
for (int i=0; i<n; i++) {
for (int j=i+t; j<=(n-t); j++) {
nb= sum[i+t][1]-sum[i][1]
+sum[j+t][1]-sum[j][1]
+sum[i+t][0]
+sum[n][0]-sum[j][0];
pnb= sum[i][1]
+sum[n][1]-sum[j+t][1];
if (nb <= k) {
temp=std::max(temp, n+i-j-t-std::max(0, pnb+nb-k));
}
//std::cout << i << '\t' << j << '\t' << nb << '\t' << pnb << '\t' << temp << '\n';
}
}
std::cout << temp << '\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 | #include <iostream> int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); int n, k, t, nb, pnb, loss, temp = -1; auto sum=new int[n][3]; sum[0][0]=0; sum[0][1]=0; sum[0][2]=0; std::cin >> n >> k >> t; std::string str; std::cin >> str; for (int i=1; i<=n; i++) { sum[i][0]=sum[i-1][0]; sum[i][1]=sum[i-1][1]; sum[i][2]=sum[i-1][2]; sum[i][str[i-1]-'1']+=1; //std::cout << i << ".\t" << sum[i][0] << '\t' << sum[i][1] << '\t' << sum[i][2] << '\n'; } if (sum[n][0] <= k) { std::cout << (n-std::max(0, sum[n][0]+sum[n][1]-k)) << '\n'; return 0; } for (int i=0; i<n; i++) { for (int j=i+t; j<=(n-t); j++) { nb= sum[i+t][1]-sum[i][1] +sum[j+t][1]-sum[j][1] +sum[i+t][0] +sum[n][0]-sum[j][0]; pnb= sum[i][1] +sum[n][1]-sum[j+t][1]; if (nb <= k) { temp=std::max(temp, n+i-j-t-std::max(0, pnb+nb-k)); } //std::cout << i << '\t' << j << '\t' << nb << '\t' << pnb << '\t' << temp << '\n'; } } std::cout << temp << '\n'; return 0; } |
English