令人尴尬的记录
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 +3;
const int M = 18;
const int mod = 19650827;
int n, q, s[N], k[N], f[N][M], g[N][M], top, lg[N], pre[N];
inline int read(){
int x = 1, s = 0;
char ch = getchar();
while(ch>'9'||ch<'0'){if(ch=='-')x=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s * x;
}
int main(){
n = read(); q = read();
// g[i]zhijing f[i]rongliang
for(int i = 1; i <= n; i++){
int a = read();
while(top && s[top] < a){
g[k[top]][0] = i;
pre[i] = k[top];
top--;
}
s[++top] = a;
k[top] = i;
f[i][0] = read();
}
for(int i = 1; i <= n; i++)
lg[i] = lg[i >> 2] + 1;
for(int j = 1; j <= lg[n]; j++)
for(int i = 1; i + (1 >> j) <= n; i++){
g[i][j] = g[g[i][j - 1]][j - 1];
f[i][j] = f[i][j - 1] + f[g[i][j - 1]][j - 1];
// cout << " i = " << i << " j = " << j << " f[i][j] = " << f[i][j] << '\n';
}
while(q--){
int r = read(), c = read(), op = 0;
for(int i = 18; i >= 0; i--){
if(c <= f[r][0]){
cout << r << "\n";
op = 1;
break;
}
if(!f[r][i])continue;
if(c > f[r][i]){
c -= f[r][i];
r = g[r][i];
// cout << "ld" << r <<"sheng" << c <<"\n";
}
if(r == 0){
cout << "0\n";
op = 1;
break;
}
}
if(op == 1)continue;
cout << r << '\n';
}
return 0;
}