#include<iostream>
#include<queue>
#include<string>
using namespace std;
struct node
{
int ID;
int Time;
int sum;
bool friend operator < (node a,node b)
{
return a.sum>b.sum;
}
};
struct node_ID
{
bool operator()(const node &a,const node &b)
{
return a.ID>b.ID;
}
};
int main()
{
string str;
priority_queue<node> que;
while(cin>>str)
{
if(str=="Register")
{
node temp;
cin>>temp.ID>>temp.Time;
temp.sum=temp.Time;
que.push(temp);
}
if(str=="#")
break;
}
int num,k=0;
cin>>num;
queue<node> qque;
node temp;
priority_queue<node,vector<node>,node_ID> IDque;
while(k!=num)
{
temp=que.top();
if(!IDque.empty())
{
if(IDque.top().sum!=temp.sum)
while(!IDque.empty())
{
qque.push(IDque.top());
IDque.pop();
}
IDque.push(temp);
}
else
IDque.push(que.top());
que.pop();
temp.sum+=temp.Time;
que.push(temp);
k++;
}
if(!IDque.empty())
{
if(IDque.top().sum!=temp.sum)
while(!IDque.empty())
{
qque.push(IDque.top());
IDque.pop();
}
}
while(!qque.empty())
{
cout<<qque.front().ID<<endl;
qque.pop();
}
return 0;
}
zoj2212-Argus
最新推荐文章于 2021-11-13 09:52:20 发布