hdu 1873 自定义优先队列
2018-03-10 13:41
344 查看
点击打开链接
#include <iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node{
int x,y;
friend bool operator<(node n1,node n2)
{
if(n1.x!=n2.x) return n1.x<n2.x; //大数优先,优先级高的先看病
else return n1.y>n2.y; //小数优先,编号小的先看病
}
};
int main()
{
int n;
while(scanf("%d",&n)==1)
{
priority_queue<node>pq1;
while(!pq1.empty()) pq1.pop();
priority_queue<node>pq2;
while(!pq2.empty()) pq2.pop();
priority_queue<node>pq3;
while(!pq3.empty()) pq3.pop();
char a[5];
int cnt=1;
for(int i=0;i<n;i++)
{
int doc,k;
scanf("%s",a);
if(a[0]=='I') {
scanf("%d%d",&doc,&k);
node skt;
skt.x=k;
skt.y=cnt;
if(doc==1) pq1.push(skt);
else if(doc==2) pq2.push(skt);
else pq3.push(skt);
cnt++;
}
else if(a[0]=='O') {
scanf("%d",&doc);
if(doc==1) {
if(!pq1.empty()) {
node f=pq1.top();
pq1.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
else if(doc==2) {
if(!pq2.empty())
{
node f=pq2.top();
pq2.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
else {
if(!pq3.empty())
{
node f=pq3.top();
pq3.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
}
}
}
return 0;
}
#include <iostream>
#include<cstdio>
#include<queue>
using namespace std;
struct node{
int x,y;
friend bool operator<(node n1,node n2)
{
if(n1.x!=n2.x) return n1.x<n2.x; //大数优先,优先级高的先看病
else return n1.y>n2.y; //小数优先,编号小的先看病
}
};
int main()
{
int n;
while(scanf("%d",&n)==1)
{
priority_queue<node>pq1;
while(!pq1.empty()) pq1.pop();
priority_queue<node>pq2;
while(!pq2.empty()) pq2.pop();
priority_queue<node>pq3;
while(!pq3.empty()) pq3.pop();
char a[5];
int cnt=1;
for(int i=0;i<n;i++)
{
int doc,k;
scanf("%s",a);
if(a[0]=='I') {
scanf("%d%d",&doc,&k);
node skt;
skt.x=k;
skt.y=cnt;
if(doc==1) pq1.push(skt);
else if(doc==2) pq2.push(skt);
else pq3.push(skt);
cnt++;
}
else if(a[0]=='O') {
scanf("%d",&doc);
if(doc==1) {
if(!pq1.empty()) {
node f=pq1.top();
pq1.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
else if(doc==2) {
if(!pq2.empty())
{
node f=pq2.top();
pq2.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
else {
if(!pq3.empty())
{
node f=pq3.top();
pq3.pop();
cout<<f.y<<endl;
}
else cout<<"EMPTY"<<endl;
}
}
}
}
return 0;
}
相关文章推荐
- HDU 1873 看病要排队 优先队列
- hdu 1873 优先队列题
- 【优先队列】HDU 1873——看病找医生
- HDU - 1873 看病要排队(学会用set,也可用优先队列写)
- hdu 1873 看病要排队 - 优先队列W
- hdu杭电1873 看病要排队【优先队列】
- hdu 1873 优先队列 priority_queue
- HDU 1873 看病要排队(优先队列的简单应用)
- HDU-1873-看病要排队【优先队列】
- 【优先队列】【priority_queue】【getline】【istringstream】hdu 1873
- 【优先队列】HDU 1873——看病找医生
- HDU 1873 看病要排队 【优先队列】
- HDU 1873 看病要排队 优先队列
- hdu 1873 看病要排队(优先队列模拟)
- HDU 4006 The kth great number (堆实现优先队列)
- hdu 1180 诡异的楼梯 bfs+优先队列 解题报告
- 可合并优先队列 HDU 1512 Monkey King
- hdu 4006 优先队列
- HDU 1026 Ignatius and the Princess I BFS 优先队列
- HDU - 1509 Windows Message Queue (优先队列 重载运算符)