#include <bits/stdc++.h>
using namespace std;
int n;
priority_queue<int,vector<int>,greater<int> >q;
queue<long long> stk;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int s;
cin>>s;
if(s==2){
cout<<stk.front()<<endl;
stk.pop();
}
else if(s==1){
int b;
cin>>b;
stk.push(b);
}
else{
int i=1,a[100005];
while(!stk.empty()){
q.push(stk.front());
stk.pop();
}
while(!q.empty()){
stk.push(q.top());
q.pop();
}
}
}
return 0;
}
7 个赞
可以发一下题目吗?
5 个赞
把代码拿代码框框起来吧
5 个赞
规律如下:
a[i]=a[i-1]+a[i-2]
5 个赞
![]()
首先是我们常说的,遇到大数据超过100000,就需要主要卡输入的问题
cin和cout改 scanf、printf吧
![]()
其次,在判断队伍的第一个的时候。如果有序队列里有人,则输出有序队列的第一个,否则就说明当前的队伍还没有排过序,输出普通队列的第一个,也就是当前队列的第一个。
![]()
这里就不要再把q里面的值放到stk里了,你这样的写法说明你还没有理解。
要排序了,我们把当前队伍里的人,挪到有序队列里面,然后排序就可以了。
此外
建议,下次放题目还是放到竞赛段提问吧,然后记得选一下题目ID
7 个赞