Advertisement
YEZAELP

TOI14: NBK48

Jul 4th, 2021
1,034
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e5 + 10;
  5. using pi = pair <int, int>;
  6. pi ar[N], SumPst[N];
  7. int n;
  8.  
  9. int Query(int x){
  10.     int l = 1, r = n, mx = 0;
  11.     while(l <= r){
  12.         int mid = (l + r) / 2;
  13.         if(SumPst[mid].first <= x){
  14.             mx = max(mx, mid);
  15.             l = mid + 1;
  16.         }
  17.         else
  18.             r = mid - 1;
  19.     }
  20.     return SumPst[mx].second;
  21. }
  22.  
  23. int main(){
  24.  
  25.     int Q;
  26.     scanf("%d%d", &n, &Q);
  27.  
  28.     for(int i=1;i<=n;i++){
  29.         int x;
  30.         scanf("%d", &x);
  31.         ar[i] = {x + ar[i-1].first, i};
  32.     }
  33.  
  34.     sort(ar + 1, ar + n + 1);
  35.  
  36.     int mx = 0;
  37.     for(int i=1;i<=n;i++){
  38.         mx = max(mx, ar[i].second);
  39.         SumPst[i] = {ar[i].first, mx};
  40.     }
  41.  
  42.     for(int q=1;q<=Q;q++){
  43.         int x;
  44.         scanf("%d", &x);
  45.         printf("%d\n", Query(x));
  46.     }
  47.  
  48.     return 0;
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement