【题解-信息学奥赛一本通】1371:看病

发布时间:2026/7/30 20:38:16
【题解-信息学奥赛一本通】1371:看病 题目1371看病题目描述有个朋友在医院工作想请BSNY帮忙做个登记系统。具体是这样的最近来医院看病的人越来越多了因此很多人要排队只有当空闲时放一批病人看病。但医院的排队不同其他排队因为多数情况下需要病情严重的人优先看病所以希望BSNY设计系统时以病情的严重情况作为优先级判断接下来谁可以去看病。输入第一行输入n表示有n个操作。对于每个操作首先输入push或pop。push的情况之后会输入a i a_iai​和b i b_ibi​分别表示患者姓名和患者病情优先级。pop后面没有输入但需要你输出。输出对于pop的操作输出此时还在排队人中优先级最大的患者姓名和优先级。表示他可以进去看病了。如果此时没人在排队那么输出”none”具体可见样例。时空限制1s / 64MB样例输入7 pop push bob 3 push tom 5 push ella 1 pop push zkw 4 pop样例输出none tom 5 zkw 4提示【数据规模和约定】1≤n≤100000每个人的优先级都不一样0≤优先级≤2000000000。姓名都是小写字母组成的长度小于20。代码#includebits/stdc.husingnamespacestd;typedeflonglongLL;typedefpairLL,stringPII;intn;LL x;string op,name;priority_queuePIIheap;intmain(){cinn;while(n--){cinop;if(oppush){cinnamex;heap.push({x,name});}else{if(!heap.empty()){PII theap.top();heap.pop();coutt.second t.firstendl;}elseputs(none);}}return0;}结果