2617: 火热的房地产
Result | TIME Limit | MEMORY Limit | Run Times | AC Times | JUDGE |
---|---|---|---|---|---|
![]() | 3s | 32768K | 495 | 87 | Standard |
ACM房地产公司是Changchun最大的房地产公司,由于想购房的人十分的多,公司设计了一种排号方案以避免拥挤: 第一天对外放号,第二天排队选房。在第二天排队时,会按照次序依次服务。但有一些人拿到号后不及时前来排队,故接待员只对目前排队的人员按照编号最小的优先服务,新来的人员会插入到现在的队伍中等待。
由于手工操作很不方便,他们希望你帮助公司编写一个程序来解决这个问题。
Input
每个case包含多行数据,每行有一个或两个整数。
若第一个整数为1,表示接待员为当前编号最小的人员服务(如队列为空则略过)。若第一个整数为2,表示有人员插入到队伍中,该人员的号次由该行的第二个整数给定。若第一个整数为0,表示这个case结束。
最后一行会输入-1,代表输入的结束
测试数据可以保证队列长度不多于500
Output
按照次序输出这个case被服务的人员编号次序,每个case后面一个空行。
Sample Input
2 3 2 7 2 5 1 2 4 1 2 99 1 0 2 100 2 3 1 0 -1
Sample Output
3 4 5 3
This problem is used for contest: 143
#include<iostream>
#include<queue>
using namespace std;
int main()
{
int n,x,t;
int flag=1;
while(flag)
{
priority_queue< int ,vector<int> ,greater<int> > q;
while(scanf("%d",&n)==1&&n)
{
if(n==-1) {flag=0;break;}
if(n==1&&!q.empty()) {t=q.top();q.pop();printf("%d/n",t);}
else if(n==2) {scanf("%d",&x);q.push(x);}
}
if(flag) printf("/n");
}
return 0;
}