如果枚举全部放进队列,空间会爆,所以出一个进一个。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define ss(x) scanf("%d",&x)
const int maxn=1000+10;
int k,len;
int num[maxn],p[maxn];
struct node{
int value,time,period;
bool operator < (const node &rhs) const {
if(time!=rhs.time) return time>rhs.time;
return value>rhs.value;
}
};
priority_queue<node> pq;
int main()
{
while(!pq.empty()) pq.pop();
len=0;
char cmd[30];
while(true){
scanf("%s",cmd);
if(cmd[0]=='#') break;
int x,y;
ss(x);ss(y);
pq.push((node){x,y,y});
}
ss(k);
rep(i,1,k){
node tmp=pq.top();pq.pop();
cout<<tmp.value<<endl;
pq.push((node){tmp.value,tmp.time+tmp.period,tmp.period});
}
return 0;
}