【PAT甲级】1124 Raffle for Weibo Followers (20分)

题意:

输入三个正整数M,N,K(M<=1000),接着输入M行每行为一个没有空格的字符串表示转发人的ID。输出从第K条开始每隔N条转发选中一名获奖人ID(一人只能获奖一次,再次获奖向下顺延一位),无人获奖则输出Keep going...。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 string s[1007];
 5 string ans[1007];
 6 map<string,int>mp;
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin.tie(NULL);
10     cout.tie(NULL);
11     int m,n,k;
12     cin>>m>>n>>k;
13     for(int i=1;i<=m;++i)
14         cin>>s[i];
15     int cnt=0;
16     for(int i=k;i<=m;i+=n){
17         while(i<=m&&mp[s[i]]>0)
18             ++i;
19         if(i<=m&&mp[s[i]]==0){
20             ++mp[s[i]];
21             ans[++cnt]=s[i];
22         }
23     }
24     if(cnt==0)
25         cout<<"Keep going...";
26     else{
27         for(int i=1;i<=cnt;++i){
28             cout<<ans[i];
29             if(i<cnt)
30                 cout<<"
";
31         }
32     }
33     return 0;
34 }
原文地址:https://www.cnblogs.com/ldudxy/p/12467085.html