当前位置: 代码迷 >> 综合 >> HDU - 1873 看病要排队(优先队列)
  详细解决方案

HDU - 1873 看病要排队(优先队列)

热度:39   发布时间:2023-11-25 09:13:55.0

看病要排队

#include<iostream>
#include<queue>
using namespace std;
struct node
{
    int x;//优先级 int y;//病人的编号 friend operator < (node a, node b){
    if(a.x==b.x) //如果优先级相同return a.y>b.y;//按顺序排return a.x<b.x;//按优先权排}
};
int main()
{
    int n;while(~scanf("%d",&n)){
    string s;node patient;int t=1,a,b,x;priority_queue<node>q[4];//三个医生 for(int i=1;i<=n;i++){
    cin>>s;if(s=="IN"){
    scanf("%d%d",&a,&b);//需要的医生和优先级 patient.x=b;//优先级 patient.y=t++;//编号 q[a].push(patient);//给医生 }else //诊治,病人出院 {
    scanf("%d",&x);if(q[x].empty()) puts("EMPTY");//当前没有病人 else{
    patient=q[x].top();q[x].pop();printf("%d\n",patient.y);//输出病人的编号 }}}}return 0;
}