可爱的情书正在学习双端队列,他对其翻转和合并产生了很大的兴趣。
初始时有 N 个空的双端队列(编号为 1 到 N ),你要支持情书的 Q 次操作。
对于每一组数据,第一行读入两个数 N 和 Q。
接下来有 Q 行,每行 3∼4 个数,意义如上。
对于每组数据的每一个操作 2,输出一行表示答案。
注意,如果操作 2 的队列是空的,就输出 -1 且不执行删除操作。
2 10
1 1 1 23
1 1 0 233
2 1 1
1 2 1 2333
1 2 1 23333
3 1 2 1
2 2 0
2 1 1
2 1 0
2 1 1
23
-1
2333
233
23333
N≤150000,Q≤400000
1≤u,v≤N,0≤w≤1,1≤val≤100000
所有数据里 Q 的和不超过 500000
#include<bits/stdc++.h>
#include<deque>
using namespace std;
int t,n;
int main(){
cin>>t;
while(t--){
deque<int> q;
cin>>n;
for(int i=1,a;i<=n;i++){
cin>>a;
if(q.empty()||a<q.front())
q.push_front(a);
else q.push_back(a);
}
for(auto v:q)
cout<<v<<" ";
cout<<endl;
}
return 0;
}