Java
import java.io.*;
import java.util.*;
public class Main {
static final int INF = 0x3f3f3f3f;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" ");
int n = Integer.parseInt(line[0]); // 总人数
int k = Integer.parseInt(line[1]); // 等待
int S = Integer.parseInt(line[2]); // Start
Set<String> set = new HashSet<>();
boolean flag = false;
int cnt = INF;
for (int i = 1; i <= n; i++) {
String s = br.readLine();
if (i == S) {
System.out.println(s);
flag = true;
set.add(s);
cnt = 0;
continue;
}
if (!set.contains(s)) {
cnt++;
}
if (cnt == k) {
System.out.println(s);
set.add(s);
cnt = 0;
}
}
if (!flag) {
System.out.println("Keep going...");
}
br.close();
}
}
C++
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_set>
using namespace std;
const int INF = 0x3f3f3f3f;
int n, k, S; // 总人数、等待、Start
unordered_set <string> st;
bool flag = false;
int main() {
scanf("%d%d%d", &n, &k, &S);
string s;
int cnt = INF;
for (int i = 1; i <= n; ++i) {
cin >> s;
if (i == S) {
cout << s << endl;
flag = true;
st.insert(s);
cnt = 0;
continue;
}
if (!st.count(s)) cnt++;
if (cnt == k) {
cout << s << endl;
st.insert(s);
cnt = 0;
}
}
if (!flag) printf("Keep going...\n");
return 0;
}