//这道题就是说,给你个id号,给你个周期,然后每个周期就会输出一次id,对于测试样例,200先输出一次2004,然后300输出2005,400的时候就是2004,600时候两个都要输出,那么按id的升序输出2004然后2005,输出了5个数据了,结束了···
//前面说的全是废话,但是需要注意其周期为0的时候,就相当于优先级是最高的,所以总是输出其周期为0的且id号最小的那个!
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace std;
struct Info
{
string str;
int num;
int p;
}re[1005];
bool cmp(Info a, Info b)
{
return a.p < b.p;
}
set<int> ans;
set<int>::iterator it;
int main()
{
int i, k, j, l, c, temp;
bool flag;
for (i = 0; i < 1005; i++)
{
cin >> re[i].str;
if (re[i].str == "#") break;
else cin >> re[i].num >> re[i].p;
}
sort(re, re+i, cmp);
temp = re[0].p;
cin >> k;
ans.clear();
c = 0;
flag = false;
while (1)
{
if (temp == 0)
{
for (j = 0; j < k; j++)
cout << re[0].num << endl;
break;
}
for (j = 0; j < i; j++)
{
if (temp % re[j].p == 0)
ans.insert(re[j].num);
}
for (it = ans.begin(); it != ans.end(); it++)
{
cout << (*it) << endl;
c++;
if (c == k)
{
flag = true;
break;
}
}
if (flag) break;
temp++;
ans.clear();
}
system("pause");
}
/*
Register 2002 1
Register 2003 0
Register 2004 200
Register 2005 300
#
5
Register 2002 0
Register 2003 0
Register 2004 0
#
5
Register 2002 1
Register 2003 1
Register 2004 1
#
5
*/
poj 2051 Argus
最新推荐文章于 2021-07-19 12:47:42 发布