题意:给定一个阿格斯系统,每个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);}
}