题意 模拟银行的排队系统 有三种操作 1-添加优先级为p 编号为k的人到队列 2-服务当前优先级最大的 3-服务当前优先级最小的 0-退出系统
可以用stl中的map 因为map本身就根据key的值排了序 对应2,3 我们只需要输出最大或最小就行了并从map中删除该键值
#include<cstdio>
#include<map>
using namespace std;
map<int, int> a;
int main()
{
map<int, int>::iterator it;
int n,k,p;
while (scanf ("%d", &n), n)
{
if (n == 1)
{
scanf ("%d%d", &k, &p);
a[p] = k;
}
else
{
if (a.empty()) printf ("0\n");
else
{
if(n==2) it = a.end(),--it;
else it=a.begin();
printf ("%d\n", it->second);
a.erase (it->firs