3196
样例输入
7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1
样例输出
2
EMPTY
3
1
1
智商越来越低了。。。。
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
using namespace std;
struct patient
{
int value;
int key;
friend bool operator < (patient p1, patient p2)
{
if(p1.value != p2.value)
{
return p1.value < p2.value;
}
else
{
return p1.key > p2.key;
}
}
};
int main()
{
int n, k, d;
char type[4];
struct patient pp[2010];
while(scanf("%d", &n) != EOF)
{
priority_queue<patient> doctor1;
priority_queue<patient> doctor2;
priority_queue<patient> doctor3;
k = 1;
while(n--)
{
scanf("%s", &type);
if(strcmp(type, "IN") == 0)
{
pp[k].key = k;
scanf("%d %d", &d, &pp[k].value);
if(d == 1)
{
doctor1.push(pp[k]);
}
else if(d == 2)
{
doctor2.push(pp[k]);
}
else
{
doctor3.push(pp[k]);
}
k++;
}
else if(strcmp(type, "OUT") == 0)
{
scanf("%d", &d);
if(d == 1)
{
if(doctor1.empty())
printf("EMPTY\n");
else
{
printf("%d\n", doctor1.top().key);
doctor1.pop();
}
}
else if(d == 2)
{
if(doctor2.empty())
printf("EMPTY\n");
else
{
printf("%d\n", doctor2.top().key);
doctor2.pop();
}
}
else
{
if(doctor3.empty())
printf("EMPTY\n");
else
{
printf("%d\n", doctor3.top().key);
doctor3.pop();
}
}
}
}
}
return 0;
}