记录编号 472404 评测结果 EEEEEEEEEE
题目名称 单词默写 最终得分 0
用户昵称 GravatarFisher. 是否通过 未通过
代码语言 C++ 运行时间 0.000 s
提交时间 2017-11-07 16:56:22 内存使用 0.00 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int maxn=100010;
const int maxsize=1000010;
int n,m;
struct dd{
	char s[11];
	int val;
}data[maxn];
inline bool cmp(dd a,dd b){
	return a.val<b.val;
}
vector<int>son[maxsize];
int t[maxsize][26];
int sz;
inline void insert(char *s,int v){
	int len=strlen(s),u=0;
	for(int i=0;i<len;i++){
		int to=s[i]-'a';
		if(!t[u][to]){
			t[u][to]=++sz;
		}
		u=t[u][to];
		son[u].push_back(v);
	}
}
inline int find(char *s){
	int len=strlen(s),u=0;
	for(int i=0;i<len;i++){
		int to=s[i]-'a';
		if(!t[u][to])return 0;
		else u=t[u][to];
	}
	return u;
}
int main(){
	freopen("engzam.in","r",stdin);
	freopen("engzam.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%s%d",data[i].s,&data[i].val);
	}
	sort(data+1,data+n+1,cmp);
	for(int i=1;i<=n;i++){
		insert(data[i].s,data[i].val);
	}
	for(int i=1;i<=m;i++){
		char c[11];
		int lim;
		scanf("%s%d",c,&lim);
		int id=find(c);
		vector<int>::iterator pos=lower_bound(son[id].begin(),son[id].end(),lim);
		if(pos==son[id].end()){
			puts("0");
			continue;
		}
		else{
			printf("%d\n",son[id].end()-pos);
		}
	}
	return 0;
}