標籤:
http://acm.hdu.edu.cn/showproblem.php?pid=1873
這道題使用的是優先隊列。主要比較函數的寫法!
#include<stdio.h>#include<queue>#include<vector>#include<functional>#include<string.h>#include<string>#include<iostream>using namespace std;class T{public:int x, id;T(int a, int b):x(a),id(b){}};bool operator < (const T &t1, const T &t2){ if(t1.x < t2.x){ return true; }else if(t1.x==t2.x&&t1.id>t2.id){ return true; } return false; }int n,a,b;char s[10];int main(){while(scanf("%d",&n)!=EOF){ priority_queue<T> q1,q2,q3; int now=1; for(int i=0;i<n;i++){ scanf("%s",s); if(strcmp(s,"IN")==0){ scanf("%d%d",&b,&a); if(b==1){ q1.push(T(a,now)); }else if(b==2){ q2.push(T(a,now)); }else{ q3.push(T(a,now)); } now++; }else{ scanf("%d",&b); if(b==1){ if(q1.empty())printf("EMPTY\n"); else { printf("%d\n",q1.top().id); q1.pop(); } }else if(b==2){ if(q2.empty())printf("EMPTY\n"); else { printf("%d\n",q2.top().id); q2.pop(); } }else{ if(q3.empty())printf("EMPTY\n"); else { printf("%d\n",q3.top().id); q3.pop(); } } } }}return 0;}
看病要排隊——hdu1873