RE报内存引用超限,仅有30pts
#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
typedef long long ll;
int t,d,q,n,v[5000005][65];
char s[5000005];
bool vis[5000005],_end[5000005];
void insert(char str[])
{
int p=0,len=strlen(str);
for(int i=0;i<len;i++)
{
int c=str[i]-'a';
if(!v[p][c])
v[p][c]=++d;
p=v[p][c];
}
_end[p]=1;
return ;
}
void find(char str[])
{
int p=0,len=strlen(str);
for(int i=0;i<len;i++)
{
int c=str[i]-'a';
if(!v[p][c])
{
printf("WRONG\n");
return ;
}
p=v[p][c];
}
if(!_end[p])
{
printf("WRONG\n");
return ;
}
if(vis[p])
printf("REPEAT\n");
else
printf("OK\n"),vis[p]=1;
return ;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%s",s),insert(s);
scanf("%d",&q);
for(int i=1;i<=q;i++)
scanf("%s",s),find(s);
}