Submission #1025639

#TimeUsernameProblemLanguageResultExecution timeMemory
1025639AtinaRFountain (eJOI20_fountain)C++14
60 / 100
260 ms6564 KiB
#include <bits/stdc++.h> using namespace std; int main() { long long n,q; cin>>n>>q; pair<long long,long long> niza[n]; for(long long i=0; i<n; i++)cin>>niza[i].first>>niza[i].second; if(n<=2000 && q<=2000) { for(long long i=0; i<q; i++) { long long r,v; cin>>r>>v; r--; v-=niza[r].second; if(v<=0) { cout<<r+1<<endl; continue; } long long last=niza[r].first; r++; while(v>0) { if(niza[r].first>last) { v-=niza[r].second; last=niza[r].first; if(v<=0)break; } r++; if(r==n)break; } if(r>=n) { cout<<0<<endl; } else { cout<<r+1<<endl; } } } else { long long prefsum[n]; prefsum[0]=niza[0].second; for(long long i=1; i<n; i++) { prefsum[i]=prefsum[i-1]+niza[i].second; } for(long long i=0; i<q; i++) { long long r,v; cin>>r>>v; r--; long long b=r,e=n-1; long long res=INT_MAX; while(b<=e) { long long mid=(b+e)/2; long long curr=prefsum[mid]; if(r)curr-=prefsum[r-1]; if(curr>=v) { res=min(res,mid); e=mid-1; } else b=mid+1; } if(res==INT_MAX)res=-1; cout<<res+1<<endl; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...