標籤:priority_queue
優先隊列,水題。
三個醫生,對應三個優先隊列就可以了。
多組資料要初始化優先隊列
#include<cstdio>#include<cstring>#include<string>#include<queue>#include<algorithm>#include<map>#include<stack>#include<iostream>#include<list>#include<set>#include<vector>#include<cmath>#define INF 0x7fffffff#define eps 1e-8#define LL long long#define PI 3.141592654#define CLR(a,b) memset(a,b,sizeof(a))#define FOR(i,a,b) for(int i=a;i<b;i++)#define FOR0(i,a,b) for(int i=a;i>=b;i--)#define pb push_back#define debug puts("==fuck==")#define acfun std::ios::sync_with_stdio(false)#define SIZE 20+10using namespace std;struct lx{ int value; int ID; friend bool operator <( lx a,lx b) { if(a.value==b.value) return a.ID>b.ID; return a.value<b.value; }};int main(){ int t; priority_queue<lx> q[4]; int Id=1; while(scanf("%d",&t)!=EOF) { char head[11]; scanf("%s",head); if(strcmp(head,"OUT")==0) { int value; scanf("%d",&value); if(q[value].empty()) puts("EMPTY"); else { lx now; now=q[value].top(); q[value].pop(); printf("%d\n",now.ID); } } else if(strcmp(head,"IN")==0) { int value; lx now; scanf("%d%d",&value,&now.value); now.ID=Id++; q[value].push(now); } t--; if(t==0) { FOR(i,1,4) { while(!q[i].empty()) q[i].pop(); } Id=1; } }}
HDU 1873 看病要排隊