This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <utility>
#include <queue>
#include <map>
#include <iomanip>
#include <stack>
#include <fstream>
using namespace std;
int search(int l,vector<pair<long long int,int> >&v){
int low=0,hi=v.size(),r=-1,mid;
while(low<=hi){
mid=low+(hi-low)/2;
if(v[mid].first>=l){
r=v[mid].second;
hi=mid-1;
}
else{
low=mid+1;
}
}
if(r==-1)return 0;
else return r+1;
}
void grupos(int nodo,vector<int>&d,vector<vector<pair<long long int, int> > >& c, vector<int>& v,int nc,vector<pair<int,int> >&p){
int max=d[nodo];
p[nodo].first=nc;
p[nodo].second=0;
int con=1;
long long int x=0;
vector<pair<long long int,int> >a;
for(int i=nodo+1;i<d.size();i++){
if(d[i]>max){
if(p[i].first==-1){
p[i].first=nc;
p[i].second=con;
con++;
}
max=d[i];
x+=v[i];
a.push_back(make_pair(x,i));
}
}
c.push_back(a);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int n,q,x=0;
cin>>n>>q;
int vo,r;
long long int l;
vector<int>v(n);
vector<int>d(n);
cin>>d[0]>>v[0];
for(int i=1;i<n;i++){
cin>>d[i]>>v[i];
}
vector<vector<pair<long long int, int> > >c;
vector<pair<int,int> >p(n,make_pair(-1,0));
for(int i=0;i<n;i++){
if(p[i].first==-1){
grupos(i,d,c,v,x,p);
x++;
}
}
for(int i=0;i<q;i++){
cin>>r>>l;
r--;
l-=v[r];
if(l<=0)cout<<r+1<<"\n";
else{
if(c[p[r].first].size()==p[r].second)cout<<0<<"\n";
else{
l+=v[r];
if(p[r].second!=0)
l+=c[p[r].first][p[r].second-1].first;
cout<<search(l,c[p[r].first])<<"\n";
}
}
}
return 0;
}
Compilation message (stderr)
fountain.cpp: In function 'void grupos(int, std::vector<int>&, std::vector<std::vector<std::pair<long long int, int> > >&, std::vector<int>&, int, std::vector<std::pair<int, int> >&)':
fountain.cpp:36:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
36 | for(int i=nodo+1;i<d.size();i++){
| ~^~~~~~~~~
fountain.cpp: In function 'int main()':
fountain.cpp:78:34: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
78 | if(c[p[r].first].size()==p[r].second)cout<<0<<"\n";
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
fountain.cpp:55:9: warning: unused variable 'vo' [-Wunused-variable]
55 | int vo,r;
| ^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |