记录编号 382686 评测结果 AAAAAAAAAAAAAAA
题目名称 审查 最终得分 100
用户昵称 GravatarNew World 是否通过 通过
代码语言 C++ 运行时间 0.127 s
提交时间 2017-03-14 16:03:51 内存使用 12.01 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define Inf 2e9
const int maxn=100500;
int ch[maxn][26],fail[maxn],cnt,RT;
char s[maxn],ss[maxn];
int val[maxn];
void Insert(){
	scanf("%s",s);int len=strlen(s);
	int p=RT;
	for(int i=0;i<len;i++) {
		int c=s[i]-'a';
		if(!ch[p][c])ch[p][c]=++cnt;
		p=ch[p][c];
	}
	val[p]=len;
}
void Build(){
	static int Head,Tail,q[maxn];
	Head=Tail=0;
	for(int i=0;i<26;i++)
		if(ch[RT][i]) q[Tail++]=ch[RT][i];
	while(Head^Tail){
		int x=q[Head++];
		for(int i=0;i<26;i++) {
			if(!ch[x][i]){
				ch[x][i]=ch[fail[x]][i];
				continue;
			}
			int j=ch[fail[x]][i];
			int tmp=ch[x][i];
			fail[tmp]=j;q[Tail++]=tmp;
		}
	}
}
int ty[maxn],pos;
void Query(){
	pos=0;int len=strlen(ss);
	int p=RT;
	for(int i=0;i<len;i++) {
		s[++pos]=ss[i];
		int c=ss[i]-'a';
		while(p && !ch[p][c])p=fail[p];
		p=ch[p][c];
		ty[pos]=p;
		pos-=val[p];
		p=ty[pos];
	}
}
void Init();
int main(){
	freopen("censor.in","r",stdin);freopen("censor.out","w",stdout);
    Init();
    return 0;
}
void Init(){
	scanf("%s",ss);
	int n;scanf("%d",&n);
	for(int i=1;i<=n;i++) Insert();
	Build();
	Query();
	for(int i=1;i<=pos;i++) printf("%c",s[i]);
}
/*
beginthatthebreakofdawn
beginthatthebreakofdawn 
 */