蒜头君设计了一个任务系统。这个系统是为了定时提醒蒜头君去完成一些事情。
系统大致如下,初始的时候,蒜头君可能会注册很多任务,每一个任务的注册如下:
Register Q_num Period
表示从系统启动开始,每过 秒提醒蒜头君完成编号为 的任务。
你能计算出蒜头君最先被提醒的 个任务吗?
输入格式
第一行输入 , ,其中 表示蒜头君注册的任务数量。
接下来 行,每行输入一条注册命令,其中 , 。
输出格式
顺序输出 行,表示依次提醒的任务的编号。
如果同一时间有多个任务,最先提醒编号小的任务。
样例输入
2 5
Register 2004 200
Register 2005 300
样例输出
2004
2005
2004
2004
2005
#include <iostream>
#include<queue>
using namespace std;
struct Node
{
int num;
int Period;
int time; //初始化
bool operator < (const Node & a) const //重载从小到大
{
if(a.Period==Period)
{
return a.num<num;
}
else
{
return a.Period<Period;
}
}
};
int main() {
int n,k;
priority_queue<Node> q;
string str;
cin>>n>>k;
Node s;
for(int i=0;i<n;i++)
{
cin>>str>>s.num>>s.Period;
s.time=s.Period;
q.push(s);
}
for(int j=0;j<k;j++)
{
s=q.top();
q.pop();
cout<<s.num<<endl;
s.Period=s.Period+s.time;
q.push(s);
}
return 0;
}