建了大顶堆和小顶堆,大佬帮忙看看哪里有问题
查看原帖
建了大顶堆和小顶堆,大佬帮忙看看哪里有问题
824014
hongqiuqiuqiu楼主2022/11/17 22:34
#include<queue>
#include<vector>
#include<iostream>
#include<string.h> 
using namespace std;
int main()
{
	priority_queue <int> lteam;//大顶堆 
	priority_queue <int,vector <int>,greater <int> > rteam;//小顶堆 
	vector<int> answer;//记录答案的动态数组 
	int n,m,mid=0;
	cin>>n;
	for(int i=1;i<=(n-1)/2;i++){
		int a;
		cin>>a;
		lteam.push(a); 
	}
	cin>>mid;
	for(int i=1;i<=n/2;i++){
		int a;
		cin>>a;
		rteam.push(a); 
	}
	cin>>m;
	while(m-->0)
	{
		char str[5];
		scanf("%s",str);
		if(str[0]=='a')
		{
			int a;
			cin>>a;
			if(a<mid)
				lteam.push(a);
			else 
				rteam.push(a); 
			if(lteam.size()>rteam.size())
			{
				rteam.push(mid);
				mid=lteam.top();
				lteam.pop();
			}
			else if(rteam.size()-lteam.size()>=2)
			{
				lteam.push(mid);
				mid=rteam.top();
				rteam.pop();
			}
		}
		else
		{
			answer.push_back(mid);
		}
	}
	for(vector<int>::iterator it=answer.begin();it!=answer.end();it++)
	{
		cout<<*it<<endl;
	}
	return 0;
}
2022/11/17 22:34
加载中...