#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
struct node
{
bool wrd, vis;
int ch[26];
}trie[500009];
int siz = 1;
inline void insert(char* str)
{
int t = 1, len = strlen(str);
for(int i = 0; i < len; i++)
{
if(!trie[t].ch[str[i] - 'a'])
t = trie[t].ch[str[i] - 'a'] = ++siz;
else
t = trie[t].ch[str[i] - 'a'];
}
trie[t].wrd = true;
}
inline int search(char* str)
{
int t = 1, len = strlen(str);
for(int i = 0; i < len; i++)
{
if(!trie[t].ch[str[i] - 'a'])
return 0;
else
t = trie[t].ch[str[i] - 'a'];
}
if(trie[t].wrd)
{
if(trie[t].vis) return -1;
trie[t].vis = true;
return 1;
}
else return 0;
}
int n, m;
char str[55];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%s", str);
insert(str);
}
scanf("%d", &m);
for(int i = 0; i < m; i++)
{
scanf("%s", str);
int res = search(str);
if(res == 1) printf("OK\n");
else if(res == -1) printf("REPEAT\n");
else printf("WRONG\n");
}
return 0;
}
8.7留坑待填
原文:https://www.cnblogs.com/wyswyz/p/11312816.html