uvalive 3135 Argus priority_queue

用优先队列维护每个时间点优先级最高的元素。

 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<stack>
#include<queue>
#include<vector>
#include<map>
using namespace std;
int n,m; struct Item
{
int Qnum,Period,Time;
bool operator<(const Item &a) const
{
return Time>a.Time||(Time==a.Time&&Qnum>a.Qnum);
}
}; int main()
{
priority_queue<Item>pq;
char s[];
while(scanf("%s",s)&&s[]!='#')
{
Item item;
scanf("%d%d",&item.Qnum,&item.Period);
item.Time=item.Period;
pq.push(item);
}
int k;
scanf("%d",&k);
while(k--)
{
Item r=pq.top();
pq.pop();
printf("%d\n",r.Qnum);
r.Time+=r.Period;
pq.push(r);
}
return ;
}
上一篇:[转]Windows网络编程学习-面向连接的编程方式


下一篇:JQ编写楼层效果