记录编号 472981 评测结果 AAAAAAAAAA
题目名称 单词默写 最终得分 100
用户昵称 Gravatar~玖湫~ 是否通过 通过
代码语言 C++ 运行时间 1.078 s
提交时间 2017-11-08 07:14:09 内存使用 101.58 MiB
显示代码纯文本
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdio>

using namespace std;
 
const int M=100010;
 
int n,m,sz,ans;
char temp[15];
vector<int> cun[M*10];
int ch[M*10][26];
struct DATE{char a[15];int key;}date[M];

inline bool cmp(DATE a,DATE b) {return a.key<b.key;} 

inline int read(){
 
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
	return x*f;
 
}
 
inline void insert(char *s,int x){
 
	int now=0;int len=strlen(s);
 
	for(int i=0;i<len;++i){
 
		int use=s[i]-'a';
		if(!ch[now][use]) ch[now][use]=++sz;
		now=ch[now][use];
		cun[now].push_back(x);

	}	
 
}
 
inline int check(char *s){
 
	int now=0;int len=strlen(s);
	for(int i=0;i<len;++i){
 
		int use=s[i]-'a';
		if(!ch[now][use]) return 0;
		now=ch[now][use];
 
	}	return now;
}
 
int DK(){
 
	freopen("engzam.in","r",stdin);
	freopen("engzam.out","w",stdout);
 
	n=read();m=read(); 
 
	for(int i=1;i<=n;++i){
 
		scanf("%s",date[i].a);
		date[i].key=read();
 
	}	sort(date+1,date+n+1,cmp);

	for(int i=1;i<=n;++i) insert(date[i].a,date[i].key);
	while(m--){
 
		scanf("%s",temp); int xx=read();
 
		int use=check(temp);

		vector<int>::iterator pos=lower_bound(cun[use].begin(),cun[use].end(),xx);

		if(pos==cun[use].end()){
			puts("0");
			continue;
		}	else printf("%d\n",cun[use].end()-pos);
		
	}
 
	return 0;
 
}
 
int dk=DK();
 
int main(){;}