比赛 “Asm.Def战记之太平洋”杯 评测结果 AWWWWWWWTT
题目名称 Asm.Def谈笑风生 最终得分 10
用户昵称 Fmuckss 运行时间 5.625 s
代码语言 C++ 内存使用 2.52 MiB
提交时间 2015-11-02 11:45:24
显示代码纯文本
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#define maxn 100050
using namespace std;
char s[maxn][22];
int slen[maxn];
int st=0;
int n;
/*void getnext(cahr a[],int next[]){
	int k=-1;
	for(int i=0;i<strlen(a);i++){
		if(k==-1||a[i]==a[k]){
			j++;
			k++;
			if(a[i]!=a[k]){
				next[i]=k;
			}else{
				next[i]=next[k];
			}
		}else{
			k=next[k];
		}
	}
}
bool kmp(char a[],char b[]){
	
}*/
int getstar(char sol[],int start){
	for(int i=0;i<start;i++){
		if(sol[i]=='*');
		return start;
	}
	return -1;
}
bool same(char a[],char b[],int len){
	for(int i=0;i<len;i++){
		if(a[i]!=b[i]){
			return false;
		}
	}
	return true;
}
void solve(){
	char sol[22];
	gets(sol);
	int solt=strlen(sol);
	int start=getstar(sol,solt);
	for(int i=1;i<=st;i++){
		if(slen[i]==solt){
			if(start!=-1)	sol[start]=s[i][start];
			if(same(sol,s[i],solt)){
				printf("YSE\n");
				return ;
			}
		}
	}
	printf("NO\n");
}
void read(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int a;
		scanf("%d ",&a);
		if(a==1){
			st++;
			gets(s[st]);
			slen[st]=strlen(s[st]);
		}else{
			solve();
		}
	}
}
int main(){
	freopen("asm_talk.in","r",stdin);
	freopen("asm_talk.out","w",stdout);
	read();
	return 0;
}