| 记录编号 | 397325 | 评测结果 | AAAAAAAAAAAAAAA | 
    
        | 题目名称 | 1942.审查 | 最终得分 | 100 | 
    
        | 用户昵称 |  Go灬Fire | 是否通过 | 通过 | 
    
        | 代码语言 | C++ | 运行时间 | 0.136 s | 
    
        | 提交时间 | 2017-04-20 07:42:21 | 内存使用 | 12.63 MiB | 
    
    
    
    		显示代码纯文本
		
		#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define Inf 2e9
#define fcl fclose(stdin);fclose(stdout);
const int maxn=105000;
char ss[maxn],s[maxn];
int n;
int ch[maxn][26],fail[maxn],RT,cnt;
int val[maxn];
void Insert(){
	int p=RT;
	int len=strlen(s+1);
	for(int i=1;i<=len;i++){
		int c=s[i]-'a';
		if(!ch[p][c]) ch[p][c]=++cnt;
		p=ch[p][c];
	}
	val[p]=max(val[p],len);
}
int q[maxn],Head,Tail;
void Build(){
	Head=Tail=0;
	for(int i=0;i<=25;i++)
		if(ch[RT][i]) q[Tail++]=ch[RT][i];
	while(Head^Tail){
		int x=q[Head++];
		for(int i=0;i<=25;i++){
			int &tmp=ch[x][i];
			if(!tmp) {tmp=ch[fail[x]][i];continue;}
			fail[tmp]=ch[fail[x]][i];
			q[Tail++]=tmp;
		}
	}
}
char Ans[maxn];
int totlen,to[maxn];
void Query(){
	int p=RT;
	int len=strlen(ss+1);
	for(int i=1;i<=len;i++){
		int c=ss[i]-'a';
		Ans[++totlen]=ss[i];
		p=ch[p][c];
		to[totlen]=p;
		totlen-=val[p];
		p=to[totlen];
	}
}
void Init();
int main(){
	freopen("censor.in","r",stdin);
	freopen("censor.out","w",stdout);
    Init();
    getchar();getchar();
    fcl;
    return 0;
}
void Init(){
	scanf("%s",ss+1);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%s",s+1);
		Insert();
	}
	Build();
	Query();
	for(int i=1;i<=totlen;i++)printf("%c",Ans[i]);
}