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