Advertisement
Josif_tepe

Untitled

Mar 20th, 2024
705
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <vector>
  2. #include <set>
  3. #include <map>
  4. #include <iostream>
  5. using namespace std;
  6. const int maxn = 2e5 + 10;
  7. int pref_sum[maxn];
  8. int query(int i, int j) {
  9.     if(i == 0) {
  10.         return pref_sum[j];
  11.     }
  12.     return pref_sum[j] - pref_sum[i - 1];
  13. }
  14. int main() {
  15.     int n, k;
  16.     cin >>n >> k;
  17.     vector<int> v(n);
  18.     int sum = 0;
  19.     for(int i = 0; i < n; i++) {
  20.         cin >> v[i];
  21.         sum += 1 - v[i];
  22.         pref_sum[i] = sum;
  23.     }
  24.     int res = 0;
  25.     int S = 0;
  26.     for(int i = 0; i < n; i++) {
  27.         int L = i;
  28.         int R = n - 1;
  29.         int idx = i;
  30.         while(L <= R) {
  31.             int mid = (L + R) / 2;
  32.             int sum = query(i, mid);
  33.             if(sum <= k) {
  34.                 L = mid + 1;
  35.                 idx = max(idx, mid);
  36.             }
  37.             else {
  38.                 R = mid - 1;
  39.             }
  40.         }
  41.         if(idx - i + 1 > res) {
  42.             res = idx - i + 1;
  43.             S = i;
  44.            
  45.         }
  46.     }
  47.     cout << res << endl;
  48.     for(int i = S; i < S + res; i++) {
  49.         if(v[i] == 0) {
  50.             cout << i + 1 << " ";
  51.         }
  52.     }
  53.     return 0;
  54. }
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement