[关闭]
@VecMD 2016-07-12T20:29:57.000000Z 字数 704 阅读 1052

CF 660C

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5. const int maxn = 300007;
  6. int str[maxn];
  7. int pre[maxn], n, k, s, t;
  8. int cal()
  9. {
  10. int l = 1, ret = 0;
  11. for(int r = 1; r <= n; r ++){
  12. while(l <= n && pre[r] - pre[l - 1] > k) l++;
  13. if(r - l + 1 > ret){
  14. ret = r - l + 1;
  15. s = l, t = r;
  16. }
  17. }
  18. return ret;
  19. }
  20. int main()
  21. {
  22. std::cin >> n >> k;
  23. int ans = k;
  24. int count = 0;
  25. for(int i = 1; i <= n; i ++){
  26. std::cin >> str[i];
  27. }
  28. for(int i = 1; i <= n; i ++){
  29. if(str[i] == 0) count ++;
  30. pre[i] = count;
  31. }
  32. std::cout << cal() << std::endl;
  33. for(int i = 1; i <= n; i ++){
  34. if(i == s) for(int j = s; j <= t; j ++){
  35. if(j != 1) std::cout << ' ';
  36. std::cout << 1;
  37. if(j == t) i = t + 1;
  38. }
  39. if(i > n) break;
  40. if(i != 1) std::cout << ' ';
  41. std::cout << str[i];
  42. }
  43. std::cout << "\n";
  44. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注