这道题目的第一思路就是并查集,结果过不了,只有30分,其他全是TLE
#include<bits/stdc++.h>
#define int long long
using namespace std;
int fa[100005];
int q,n;
int d[100005],c[100005];
inline int query(int i,int t){
t-=c[i];
if(t<=0) return i;
if(fa[i]==i){
if(t>0) return 0;
return i;
}
return query(fa[i],t);
}
signed main(){
cin >> n >> q;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=n;i++){
cin >> d[i] >> c[i];
for(int j=i-1;j>=1;j--){
if(d[j]>=d[i]) break;
if(fa[j]==j) fa[j]=i;
}
}
int r,v;
while(q--){
cin >> r >> v;
cout << query(r,v) << endl;
}
return 0;
}