1 // (1) 在最左侧插入一个数; 2 3 // (2) 在最右侧插入一个数; 4 5 // (3) 将第k个插入的数删除; 6 7 // (4) 在第k个插入的数左侧插入一个数; 8 9 // (5) 在第k个插入的数右侧插入一个数 10 #include<iostream> 11 #include<algorithm> 12 using namespace std; 13 const int N=100010; 14 int e[N],l[N],r[N],idx; 15 int m; 16 void init(){ 17 r[0]=1; 18 l[1]=0; 19 idx=2; 20 } 21 void insert(int k,int x){ 22 e[idx]=x; 23 l[idx]=k; 24 r[idx]=r[k]; 25 l[r[k]]=idx; 26 r[k]=idx; 27 idx++; 28 } 29 void remove(int k){ 30 l[r[k]]=l[k]; 31 r[l[k]]=r[k]; 32 } 33 int main(void){ 34 init(); 35 cin>>m; 36 for(int i=0;i<m;i++){ 37 string s; 38 int k,x; 39 cin>>s; 40 if(s=="L"){ 41 cin>>x; 42 insert(0,x); 43 }else if(s=="R"){ 44 cin>>x; 45 insert(l[1],x); 46 }else if(s=="D"){ 47 cin>>k; 48 remove(k+1); 49 }else if(s=="IL"){ 50 cin>>k>>x; 51 insert(l[k+1],x); 52 }else if(s=="IR"){ 53 cin>>k>>x; 54 insert(k+1,x); 55 } 56 } 57 for(int i=r[0];i!=1;i=r[i]){ 58 cout<<e[i]<<" "; 59 } 60 return 0; 61 }