优先队列,设定一下优先级就好!
#include<iostream>
#include<queue>
#include<stdio.h>
using namespace std;
struct Argus
{
int q,p,s;
bool operator<(const Argus&A)const
{
return A.s<s||(A.s==s&&A.q<q);
}
};
int main()
{
int n;
char s[10];
Argus a;
priority_queue<Argus> que;
while(scanf("%s",s)!=EOF)
{
if(s[0]=='#')
break;
scanf("%d%d",&a.q,&a.p);
a.s=a.p;
que.push(a);
}
scanf("%d",&n);
while(n--)
{
a=que.top();
printf("%d\n",a.q);
que.pop();
a.s+=a.p;
que.push(a);
}
}