Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using pii = pair<int,int>;
- vector<pii> sum;
- int q1[100010];
- int Binarysearch(int y,int n){
- int l=0 , r=n-1;
- int cnt =-1;
- while(l<=r){
- int m=(l+r)/2;
- if(sum[m].first<=y){
- if(cnt<q1[m]){
- cnt=q1[m];
- }
- l=m+1;
- }
- else{
- r=m-1;
- }
- }
- return cnt;
- }
- int main(){
- int n ,q ;
- cin >> n >> q;
- int x;
- for(int i=0;i<n;++i){
- scanf("%d",&x);
- if(i==0){
- sum.push_back(make_pair(x,i));
- }
- else{
- sum.push_back(make_pair(x+sum[i-1].first,i));
- }
- }
- sort(sum.begin(),sum.end());
- int posmax ;
- for(int i=0;i<n;++i){
- if(i==0){
- q1[i]=sum[i].second;
- posmax=i;
- }
- else{
- if(sum[i].second>sum[posmax].second){
- q1[i]=sum[i].second;
- posmax =i;
- }
- else{
- q1[i]=sum[posmax].second;
- }
- }
- }
- for(int i=0;i<q;++i){
- scanf("%d",&x);
- cout << Binarysearch(x,n)+1 << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement