看到队列安排我居然真的模拟队列 hhh 结果G了
错误代码
#include <bits/stdc++.h>
using namespace std;
int n,m;
int main(){
deque<int>deq1;
deque<int>deq2;
cin>>n;
for(int i=1;i<=n;i++){
deq1.push_back(i);
}
//push的意思是往前压 所以front自然就是最前面的1
//deque有前有元素的返回 也可以往前后方 前后删除 建议用deque
for(int i=2;i<=n;i++){
int k,p;cin>>k>>p;
if(p==1){
//由于pop没有右边pop的函数 所以只能从左往右
while(deq1.front()!=k){
deq2.push_front(deq1.front()); //deq1最前面的不变顺序放在 deq2里面
deq1.pop_front();
}
//到了k的位置 但是还要再来一次
deq2.push_front(deq1.front());
deq1.pop_front();
//此时空出右边的位置可以插入i
deq1.push_front(i);
//然后补回
while(deq2.size()!=0){//拿回的时候deq2后面的直接放在deq1的最前面就行
deq1.push_front(deq2.back());
}
}
else if(p==0){//左边 左边遍历
while(deq1.front()!=k){
deq2.push_front(deq1.front()); //deq1最前面的不变顺序放在 deq2里面
deq1.pop_front();
}
//此时空出左边的位置可以插入i
deq1.push_front(i);
//然后补回
while(deq2.size()!=0){//拿回的时候deq2后面的直接放在deq1的最前面就行
deq1.push_front(deq2.back());
}
}
}
cin>>m;
for(int i=1;i<=m-1;i++){
int len=0;cin>>len;
}
return 0;
}