#include <bits/stdc++.h>
using namespace std;
void solve(){
long long n,m;
cin >> n >> m;
vector<long long>d(n+1),c(n+1);
vector<vector<long long>>a(30);
for(int i = 1;i<=n;i++){
cin >> d[i] >> c[i];
for(int j = 30;j>=0;j--){
if(d[i]>(1<<j)){
a[j].push_back(i);
}
}
}
for(int i = 1;i<=m;i++){
long long x,y;
cin >> x >> y;
long long k = 0;
y-=c[x];
while(y>0){
for(int j = 30;j>=0;j--){
if(d[x]>=(1<<j)){
k = j;
break;
}
}
long long c1 =0;
for(auto to:a[k]){
if(to>x && d[to]>d[x]){
x = to;
c1 = 1;
break;
}
}
if(c1 == 0){
x = 0;
break;
}
y-=c[x];
}
cout << x << '\n';
}
}
int main(){
long long ht = 1;
//cin >> ht;
while(ht--)solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |