初始化序列为空
给 n 个操作:
0 : 从头部往里放
1 : 从尾部往里放
2 : 从头部删除
3 : 从尾部删除
4: 改变功能,原来是从头部放的从尾部放,从尾部放的从头部放,删除也是如此
注:如果序列为空,请忽略2,3功能
输入
Line1:T组数据(T<=10)
Line2:一个整数n(n<=200)
Line3:如果是0||1 操作,则后面跟一个m(int范围内),表示要放的数。
输出
如果当前序列为空,输出-1;
否则输出当前序列,用空格隔开
样例输入
2
3
0 1
0 2
1 3
0
样例输出
2 1 3
-1
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
int main()
{
int t,n;
scanf("%d",&t);
while(t--){
int n,a,b;
bool flag=true;
deque<int> q;
scanf("%d",&n);
while(n--){
scanf("%d",&a);
if(a==4) flag=!flag;
if(q.empty() && (a==2 || a==3)) continue;
if(flag){
if(a==0){
scanf("%d",&b);
q.push_front(b);
}
if(a==1){
scanf("%d",&b);
q.push_back(b);
}
if(a==2) q.pop_front();
if(a==3) q.pop_back();
}else{
if(a==1){
scanf("%d",&b);
q.push_front(b);
}
if(a==0){
scanf("%d",&b);
q.push_back(b);
}
if(a==3) q.pop_front();
if(a==2) q.pop_back();
}
}
if(q.empty()) printf("-1\n");
else{
while(!q.empty()){
printf("%d ",q.front());
q.pop_front();
}
printf("\n");
}
}
return 0;
}