# include <bits/stdc++.h>
using namespace std;
struct node
{
long long front;
long long data;
long long back;
};
node lst[200010];
int cr;
void l(long long a)
{
lst[cr].data=a;
lst[cr].front=0;
lst[cr].back=lst[0].back;
long long n=lst[0].back;
lst[n].front=cr;
lst[0].back=cr;
cr++;
}
void r(long long a)
{
lst[cr].data=a;
lst[cr].back=1;
lst[cr].front=lst[1].front;
long long n=lst[1].front;
lst[n].back=cr;
lst[1].front=cr;
cr++;
}
void d(long long a)
{
long long n=lst[a+1].front;
long long n1=lst[a+1].back;
lst[n].back=n1;
lst[n1].front=n;
}
void il(long long a,long long b)
{
lst[cr].data=b;
lst[cr].back=a+1;
lst[cr].front=lst[a+1].front;
long long n=lst[a+1].front;
lst[a+1].front=cr;
lst[n].back=cr;
cr++;
}
void ir(long long a,long long b)
{
lst[cr].data=b;
lst[cr].front=a+1;
lst[cr].back=lst[a+1].back;
long long n=lst[a+1].back;
lst[a+1].back=cr;
lst[n].front=cr;
cr++;
}
int main()
{
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
lst[0].back=1;
lst[1].front=0;
cr=2;
int m;
cin>>m;
while(m--)
{
long long a,b;
char ch[6];
cin>>ch;
if(strcmp(ch,"L")==0)
{
cin>>a;
l(a);
}
else if(strcmp(ch,"R")==0)
{
cin>>a;
r(a);
}
else if(strcmp(ch,"D")==0)
{
cin>>a;
d(a);
}
else if(strcmp(ch,"IL")==0)
{
cin>>a>>b;
il(a,b);
}
else if(strcmp(ch,"IR")==0)
{
cin>>a>>b;
ir(a,b);
}
}
for(long long i=lst[0].back;i!=1;i=lst[i].back)
{
cout<<lst[i].data<<' ';
}
return 0;
}
数据样例能过,但第一个数据点就错了,第一个数据点前面能看到的答案和我的输出都是一样的,不知道哪里错了。
不好意思,数据构造出现了点问题,影响大佬的ac体验了
现已修改,可以重新提交