#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 11;
const int inf = 1e9 + 1;
int d[N], c[N], up[N][18], sum[N][18];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
int n, q;
cin >> n >> q;
for(int i = 1; i <= n; i++){
cin >> d[i] >> c[i];
}
stack < int > st;
st.push(0);
d[0] = inf, c[0] = inf;
for(int i = n; i >= 1; i--){
while(d[st.top()] <= d[i]) st.pop();
up[i][0] = st.top();
sum[i][0] = c[i];
st.push(i);
}
for(int v = n; v >= 1; v--){
for(int i = 1; i <= 17; i++){
up[v][i] = up[up[v][i - 1]][i - 1];
sum[v][i] = sum[v][i - 1] + sum[up[v][i - 1]][i - 1];
}
}
while(q--){
int r, v;
cin >> r >> v;
for(int i = 17; i >= 0; i--){
if(sum[r][i] < v){
v -= sum[r][i];
r = up[r][i];
}
}
cout << r << '\n';
}
}
// subete no mono no owari wa sugu ni yattekuru
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |