Iamtui1010

ctskietc.cpp

Jan 17th, 2022
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<vector>
  4.  
  5. #define long long long
  6. #define nln '\n'
  7.  
  8. using namespace std;
  9.  
  10. void build(long n, vector<long> &sum, const vector<long> &a)
  11. {
  12.     for (long i = 1; i <= n; ++i)
  13.         sum[i] = sum[i-1] + a[i];
  14. }
  15.  
  16. long get(long lef, long rig, const vector<long> &sum)
  17. {
  18.     return sum[rig]-sum[lef-1];
  19. }
  20.  
  21. bool take(long d, long n, const vector<long> &sum, long mav)
  22. {
  23.     for (long i = 1; i <= n-d+1; ++i)
  24.         if ((long)get(i, i+d-1, sum) > mav)
  25.             return 0;
  26.     return 1;
  27. }
  28.  
  29. int main()
  30. {
  31.     cin.tie(0)->sync_with_stdio(0);
  32.     cout.tie(0)->sync_with_stdio(0);
  33.     //freopen("ctskietc.inp", "r" , stdin);
  34.     long n, k;
  35.     cin >> n >> k;
  36.     vector<long> a(n+1, 0);
  37.     for (long i = 1; i <= n; ++i)
  38.         cin >> a[i];
  39.     vector<long> sum(n+1, 0);
  40.     build(n, sum, a);
  41.     // Binary search
  42.     long lef = 1, rig = n, res = -1;
  43.     while (lef <= rig){
  44.         long mid = (lef+rig)>>1;
  45.         if (take(mid, n, sum, k)){
  46.             res = mid;
  47.             lef = mid+1;
  48.         }
  49.         else
  50.             rig = mid-1;
  51.     }
  52.     cout << res << nln;
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment