记录编号 379184 评测结果 AAAAAAAEAE
题目名称 查字典 最终得分 80
用户昵称 GravatarHeHe 是否通过 未通过
代码语言 C++ 运行时间 0.524 s
提交时间 2017-03-05 20:43:29 内存使用 51.81 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define is_num(tmp) (tmp<='9'&tmp>='0')
inline int in(void){
	char tmp(getchar());
	int res(0),f(1);
	while(!(is_num(tmp)||tmp=='-'))tmp=getchar();
	if(tmp=='-')f=-1,tmp=getchar();
	while(is_num(tmp))
		res=(res<<1)+(res<<3)+(tmp^48),
		tmp=getchar();
	return res*f;
}
struct NODE{
	int page;
	NODE *s[26];
	NODE():page(-1){
		memset(s,0,sizeof(s));
	}
}root;
inline NODE *new_NODE(void){
	static NODE ns[500000];
	static int tot(0);
	return ns+tot++;
}
void Push(const char* a,int n){
	int l(0),r(strlen(a)),tmp;
	NODE *now(&root);
	while(l<r){
		if(!now->s[tmp=a[l]-'a']){
			now->s[tmp]=new_NODE();
		}
		now=now->s[tmp];
		++l;
	}
	now->page=n;
	return ;
}
int Find(const char* a){
	int l(0),r(strlen(a));
	NODE *now(&root);
	while(l<r){
		now=now->s[a[l]-'a'];
		++l;
	}
	return now->page;
}
//#define LOCAL
char s[101];
int N,Q,tmp;
int main(){
#ifndef LOCAL
	freopen("scanword.in","r",stdin);
	freopen("scanword.out","w",stdout);
#endif
	N=in();
	for(int i=0;i<N;++i){
		scanf("%s",s),tmp=in();
		Push(s,tmp);
	}
	Q=in();
	for(int i=0;i<Q;++i){
		scanf("%s",s);
		printf("%d\n",Find(s));
	}
	return 0;
}