rt,
#include<bits/stdc++.h>
using namespace std;
std::mt19937 rnd(233);
const int N=4e6+5;
int n,m,cnt;
string s[N];
struct fhq{
int l,r;
int key,val;
int siz;
}tr[N];
int x,y,z,f,idx,rt;
int add(int key){
tr[++idx].key=key;
tr[idx].val=rnd();
tr[idx].siz=1;
return idx;
}
void push_up(int x){
tr[x].siz=tr[tr[x].l].siz+tr[tr[x].r].siz+1;
}
void split(int p,int key,int &x,int &y){
if(!p)x=y=0;
else{
if(key<=tr[tr[p].l].siz){
y=p;
split(tr[p].l,key,x,tr[p].l);
// return;
}else{
x=p;
split(tr[p].r,key-tr[tr[p].l].siz-1,tr[p].r,y);
// return;
}
push_up(p);
}
}
int merge(int x,int y){
if(!x||!y)return x+y;
if(tr[x].val<tr[y].val){
tr[x].r=merge(tr[x].r,y);
push_up(x);
return x;
}else{
tr[y].l=merge(x,tr[y].l);
push_up(y);
return y;
}
}
int insert(int key,int id){
split(rt,key,x,y);
rt=merge(x,merge(add(id),y));
}
void query(int key){
split(rt,key,x,y);
split(y,1,z,f);
cout<<s[tr[z].key]<<endl;
rt=merge(x,merge(z,f));
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[++cnt];
insert(i-1,cnt);
}
cin>>m;
while(m--){
cin>>s[++cnt];
int x;
cin>>x;
insert(x,cnt);
}
cin>>m;
while(m--){
int x;
cin>>x;
query(x);
}
return 0;
}
报错显示是segment fault,按本蒟蒻的理解就是数组越界之类的问题,问题是本蒟蒻对拍了好几个数据样例都没有出现RE的情况,请问万能的dalao,到底是哪里错了呢?悬两棺,求求TT。