hdu 1873 看病要排队
这题跟上篇写的那个题差不多 只是这题是级别高的先出来
没啥好说的 贴代码
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>
#include <queue>
#define eps 1e-8
#define op operator
#define MOD 10009
#define MAXN 100100
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FOV(i,a,b) for(int i=a;i>=b;i--)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REV(i,a,b) for(int i=a-1;i>=b;i--)
#define MEM(a,x) memset(a,x,sizeof a)
#define ll __int64
using namespace std;
struct node
{
int level,order;
bool operator <(const node p)const
{
if(level!=p.level) return level<p.level;//大的优先
return order>p.order;//小的优先
}
};
node q;
int main()
{
freopen("ceshi.txt","r",stdin);
int tc;
while(scanf("%d",&tc)!=EOF)
{
priority_queue<node> Q[4];
int cnt=1;
while(tc--)
{
char ch[5];
scanf("%s",ch);
if(ch[0]=='I')
{
int a,b;
scanf("%d%d",&a,&b);
q.level=b;
q.order=cnt++;
Q[a].push(q);
}
else
{
int a;
scanf("%d",&a);
if(!Q[a].empty())
{
q=Q[a].top(); Q[a].pop();
printf("%d\n",q.order);
}
else printf("EMPTY\n");
}
}
}
return 0;
}