比赛 普及组2016模拟练习4 评测结果 AAAAAAAAAA
题目名称 查字典 最终得分 100
用户昵称 森林 运行时间 0.420 s
代码语言 C++ 内存使用 103.40 MiB
提交时间 2016-11-17 19:11:39
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cmath>
using namespace std;
const int maxnode=10009*100;
int ch[maxnode][26],val[maxnode];
int tot=0;
inline int base(const char &a){
	if(a>='a'&&a<='z')return a-'a';
	return a-'A';
}
inline void insert(const char *str,const int &v){
	int u=0;
	for(int i=0;str[i];++i){
		if(!ch[u][base(str[i])])ch[u][base(str[i])]=++tot;
		u=ch[u][base(str[i])];
	}
	val[u]=v;
}
inline int query(const char *str){
	int u=0;
	for(int i=0;str[i];++i){
		if(!ch[u][base(str[i])])return 0;
		u=ch[u][base(str[i])];
	}
	return val[u];
}
int main(){
	#define submit
	#ifdef submit
	freopen("scanword.in","r",stdin);
	freopen("scanword.out","w",stdout);
	#endif
	int n,tmp;
	char str[110];
	scanf("%d",&n);
	while(n--){
		scanf("%s%d",str,&tmp);
		insert(str,tmp);
	}
	scanf("%d",&n);
	while(n--){
		scanf("%s",str);
		printf("%d\n",query(str));
	}
	#ifdef submit
	fclose(stdin);
	fclose(stdout);
	#else
	system("pause");
	#endif
	return 0;
}