摘要:K路归并
#include <iostream>
using namespace std;
const int k_size = 10000;
const int com_size = 3000;
int com[com_size+1] = {0};
int interval[com_size+1] = {0};
int array[com_size+1] = {0};
int K = 0;
int com_num = 0;
void solve()
{
while(K > 0){
int min_value = array[1];
int min_index = 1;
for(int i=2; i<=com_num; i++){
if(array[i] < min_value ){
min_index = i;
min_value = array[i];
}
if(array[i] == min_value){
if(com[i] < com[min_index]){
min_index = i;
min_value = array[i];
}
}
}
cout << com[min_index] << endl;
array[min_index] += interval[min_index];
K--;
}
}
int main()
{
string buf;
while(cin >> buf){
if( buf == "#" ){
break;
}
com_num++;
cin >> com[com_num] >> interval[com_num];
}
cin >> K;
for(int i=1; i<=com_num; i++){
array[i] = interval[i];
}
solve();
return 0;
}