Advertisement
SuitNdtie

Subsegmentsum

May 5th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3.  
  4. int main()
  5. {
  6.     int n;
  7.     ll s;
  8.     scanf("%d %lld",&n,&s);
  9.     ll arr[n+1];
  10.     ll qs[n+1];
  11.     qs[0] = 0;
  12.     for(int i = 1 ; i <= n ; i ++){
  13.         scanf("%lld",&arr[i]);
  14.         qs[i] = qs[i-1] + arr[i];
  15.     }
  16.     int mina = n+1;
  17.     int L = 1 , R = n; //bsearch on size
  18.     while(L <= R){
  19.         int M = (L+R)/2;
  20.         bool check = false;
  21.         for(int l = 1 ; l <= n && !check ; l ++){
  22.             int r = l + M - 1;
  23.             if(r > n)break;
  24.             ll sum = qs[r] - qs[l-1];
  25.             if(sum >= s){
  26.                 check = true;
  27.                 break;
  28.             }
  29.         }
  30.         if(check){
  31.             if(M < mina)mina = M;
  32.             R = M - 1;
  33.         }else{
  34.             L = M + 1;
  35.         }
  36.     }
  37.     printf("%d",(mina == n + 1 ? -1 : mina));
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement