Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e5 + 10;
- using pi = pair <int, int>;
- pi ar[N], SumPst[N];
- int n;
- int Query(int x){
- int l = 1, r = n, mx = 0;
- while(l <= r){
- int mid = (l + r) / 2;
- if(SumPst[mid].first <= x){
- mx = max(mx, mid);
- l = mid + 1;
- }
- else
- r = mid - 1;
- }
- return SumPst[mx].second;
- }
- int main(){
- int Q;
- scanf("%d%d", &n, &Q);
- for(int i=1;i<=n;i++){
- int x;
- scanf("%d", &x);
- ar[i] = {x + ar[i-1].first, i};
- }
- sort(ar + 1, ar + n + 1);
- int mx = 0;
- for(int i=1;i<=n;i++){
- mx = max(mx, ar[i].second);
- SumPst[i] = {ar[i].first, mx};
- }
- for(int q=1;q<=Q;q++){
- int x;
- scanf("%d", &x);
- printf("%d\n", Query(x));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement