阶段测评2的B怎么做?我的代码哪里能改?代码如下。

#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 个赞

:heavy_heart_exclamation:
首先是我们常说的,遇到大数据超过100000,就需要主要卡输入的问题
cin和cout改 scanf、printf吧

:heavy_heart_exclamation:
其次,在判断队伍的第一个的时候。如果有序队列里有人,则输出有序队列的第一个,否则就说明当前的队伍还没有排过序,输出普通队列的第一个,也就是当前队列的第一个。

:heavy_heart_exclamation:
这里就不要再把q里面的值放到stk里了,你这样的写法说明你还没有理解。
要排序了,我们把当前队伍里的人,挪到有序队列里面,然后排序就可以了。

此外
建议,下次放题目还是放到竞赛段提问吧,然后记得选一下题目ID

7 个赞