一开始第一反应是写双向链表,但是。。。。我像个傻子一样不会写了。。。。。
所以就想这么简单的数据,直接开数组干吧,按照题目描述直接模拟,还是好容易漏掉细节。然而。。。70分。
可能是睡了一觉有精神了,以来就想到直接左右两个顶点就行了,改后的程序简单好多
#include<bits/stdc++.h>
using namespace std;
const int maxn=200000+10;
int v[maxn];
int main()
{
char a,b;
int k,s,l=100001,r=100000,m=0;
cin>>s;
for(int i=1;i<=s;i++){
cin>>a>>b;
if(a=='A'){
m++;
if(b=='L'){
v[--l]=m;
}
else v[++r]=m;
}
else {
cin>>k;
if(b=='L')l+=k;
else r-=k;
}
// for(int j=1;j<=len;j++)cout<<v[j]<<" ";
// cout<<endl;
}
for(int i=l;i<=r;i++)cout<<v[i]<<endl;
return 0;
}
有一个要注意的点是--l和++r