http://acm.hdu.edu.cn/showproblem.php?pid=1509
思路:这题排序条件是第二个数小的在前面,如果一样的话先输入的排在前头,然后输出字符串和第一个数;
代码:
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;
struct node
{
char c[15];
int m,n,z;
friend bool operator<(node a,node b)
{
if(a.n!=b.n)
return a.n>b.n;
else return a.z>b.z;
}
};
int main()
{
char c[3];
int k=0;
priority_queue<node>Q;
node a;
char d[15];
int m,n;
while(cin>>c)
{
if(strcmp(c,"GET")==0)
{
if(Q.empty())
{
cout<<"EMPTY QUEUE!"<<endl;
}
else
{
a=Q.top();
Q.pop();
cout<<a.c<<' '<<a.m<<endl;
}
}
if(strcmp(c,"PUT")==0)
{
cin>>a.c>>a.m>>a.n;
a.z=k++;
Q.push(a);
}
}
return 0;
}