题意:给定一个阿格斯系统,每个period周期都会产生一次编号为Q_num的事件,任务是模拟前k个事件。
思路:直接按照优先队列的方法来模拟和构造即可。
code:
#include <bits/stdc++.h>
using namespace std;
struct node
{
int qnum,period,time;
bool operator <(const node &a) const {
return time>a.time||(time==a.time&&qnum>a.qnum);
}
};
int main()
{
priority_queue<node>pq;
char s[25];
while (scanf("%s",s)&&s[0]!='#'){
node t;
scanf("%d%d",&t.qnum,&t.period);
t.time=t.period;
pq.push(t);
}
int k;
scanf("%d",&k);
for (int i=0;i<k;i++){
node r=pq.top();pq.pop();
printf("%d\n",r.qnum);
r.time+=r.period;
pq.push(r);
}
}