小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。

输入格式:

输入第一行给出三个正整数 M(≤ 1000)、N 和 S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从 1 开始)。随后 M 行,顺序给出转发微博的网友的昵称(不超过 20 个字符、不包含空格回车的非空字符串)。

注意:可能有人转发多次,但不能中奖多次。所以如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位。

输出格式:

按照输入的顺序输出中奖名单,每个昵称占一行。如果没有人中奖,则输出 Keep going...

输入样例 1:

  1. 9 3 2
  2. Imgonnawin!
  3. PickMe
  4. PickMeMeMeee
  5. LookHere
  6. Imgonnawin!
  7. TryAgainAgain
  8. TryAgainAgain
  9. Imgonnawin!
  10. TryAgainAgain

输出样例 1:

  1. PickMe
  2. Imgonnawin!
  3. TryAgainAgain

输入样例 2:

  1. 2 3 5
  2. Imgonnawin!
  3. PickMe

输出样例 2:

  1. Keep going...

代码

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<vector>
  4. #include<algorithm>
  5. using namespace std;
  6. int main() {
  7. int totalNumber, interval, firstOne;
  8. scanf("%d%d%d", &totalNumber, &interval, &firstOne);
  9. if (firstOne > totalNumber) {
  10. cout << "Keep going..." << endl;
  11. return 0;
  12. }
  13. else {
  14. int i = 0;
  15. while ((++i) < firstOne) { // Ignore them before he get the prize
  16. string temp;
  17. cin >> temp;
  18. }
  19. vector<string> rewardList;
  20. while ((i++) <= totalNumber) {
  21. string name;
  22. cin >> name;
  23. vector<string>::iterator it = find(rewardList.begin(), rewardList.end(), name);
  24. if (it == rewardList.end()) { // This guy don't take the prize yet
  25. rewardList.push_back(name);
  26. cout << name << endl;
  27. for (int j = 1; i <= totalNumber && j < interval; i++, j++) { // Ignore (interval - 1) times
  28. string temp;
  29. cin >> temp;
  30. }
  31. }
  32. }
  33. }
  34. return 0;
  35. }