fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. using namespace std;
  5. const int N = 1e6 + 7;
  6.  
  7. int n, k;
  8. int a[N], pref[N];
  9.  
  10. void sub1() {
  11. int ans = 0;
  12. for (int i = 1; i <= n; i++) {
  13. if (a[i] == 1) ans++;
  14. if (a[i] == 0 && k > 0) k--, ans++;
  15. }
  16. if (k > 0) ans--;
  17. cout << ans << '\n';
  18. }
  19.  
  20. void sub2() {
  21. int ans = 0, sum = 0;
  22. for (int i = 1; i <= n; i++) sum += a[i];
  23. for (int i = 1; i < n; i++) {
  24. int tmp = sum;
  25. for (int j = i; j <= i + 1; j++) {
  26. if (a[j] == 0) tmp++;
  27. else tmp--;
  28. }
  29. ans = max(ans, tmp);
  30. }
  31. cout << ans << '\n';
  32. }
  33.  
  34. void sub3() {
  35. for (int i = 1; i <= n; i++) pref[i] = pref[i - 1] + a[i];
  36. int ans = 0;
  37. for (int i = 1; i <= n - k + 1; i++) {
  38. int l = pref[i - 1] - pref[0];
  39. int mid = pref[i + k - 1] - pref[i - 1];
  40. int r = pref[n] - pref[i + k - 1];
  41. ans = max(ans, l + r + k - mid);
  42. }
  43. cout << ans << '\n';
  44. }
  45.  
  46. signed main() {
  47. ios_base::sync_with_stdio(0);
  48. cin.tie(0); cout.tie(0);
  49.  
  50. freopen("DANDEN.inp", "r", stdin);
  51. freopen("DANDEN.out", "w", stdout);
  52.  
  53. cin >> n >> k;
  54. for (int i = 1; i <= n; i++) cin >> a[i];
  55. if (k == 1) sub1();
  56. else if (k == 2) sub2();
  57. else sub3();
  58. return 0;
  59. }
Success #stdin #stdout 0.01s 5160KB
stdin
Standard input is empty
stdout
Standard output is empty