优先队列的应用。
传送门:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18684
#include <cstdio>
#include <cstring>
#include <stack>
#include <queue>
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
struct Node{
int num;
int time;
int period;
bool operator < (const Node b) const {
return time > b.time || (time == b.time && num > b.num);
}
};
priority_queue <Node> p;
void Deal_with() {
char tempc[20];
int tempa,tempb;
while(scanf("%s",tempc) && tempc[0] != '#') {
scanf("%d %d",&tempa,&tempb);
Node a;
a.num = tempa; a.time = tempb; a.period = tempb;
p.push(a);
}
int k ;
scanf("%d",&k);
for(int i = 0 ; i < k ; i ++) {
Node a = p.top();
printf("%d\n",a.num);
p.pop();
a.time += a.period;
p.push(a);
}
}
int main(void) {
//freopen("a.in","r",stdin);
Deal_with();
return 0;
}