题意:
输入三个正整数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 }