看病

本来看着挺简单结果写完了怎么也调不对调了半个小时

很明显直接用优先队列直接模拟就好了。(没啥好说的)但是就是写不对

刚开始发现记不住 priority 怎么写,后来发现自己记不住重载运算符怎么写,再后来发现忘了优先队列怎么用...

就当是复习一遍这堆东西了吧。

#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
	int w;
	string nam;
	bool operator<(const node& x) const{//大根堆
		return w<x.w;
	}
};
priority_queue<node>q;
int main()
{
	scanf("%d",&n); 
	for(int i=1;i<=n;i++)
	{
		string op;
		cin>>op;
		if(op[1]=='o')
		{
			if(q.empty()) cout<<"none"<<endl;//一定要先判断是否为空
			else
			{
				cout<<q.top().nam<<" "<<q.top().w<<endl;//让最严重的病人看病
				q.pop();//别忘了弹出
			}
		}
		else
		{
			node a;
			cin>>a.nam>>a.w;
			q.push(a);//加入队列
		}
	}
	return 0;
}//qwq
posted @ 2021-01-15 20:38  樱雪喵  阅读(61)  评论(0编辑  收藏  举报