题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1509
题意: GET为输出队列中优先级最高的元素;PUT为输入元素;输入的元素当其其他优先级相同时则按顺序输出,所以需要定义一个order作为优先级比较的一个关键因素。
代码如下:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <queue>
using namespace std;
struct node
{
int a, b, ord;
char name[30];
bool operator < ( const node &x ) const {
if( b == x.b ) return ord > x.ord;
return b > x.b;
}
};
int main()
{
vector<node>vis;
priority_queue<node>pq;
char str[20];
int cnt = 1;
while ( scanf ( "%s", str ) != EOF )
{
if( str[ 0 ] == 'G' )
{
if( pq.empty() )
{
printf ("EMPTY QUEUE!\n");
}
else{
node pp;
pp=pq.top();
pq.pop();
printf( "%s %d\n", pp.name, pp.a );
}
}
else {
if(str[0]=='P')
{
node mess;
scanf ( "%s %d %d\n", mess.name, &mess.a, &mess.b );
mess.ord = cnt++;
pq.push(mess);
}
}
}
return 0;
}