记录编号 |
472981 |
评测结果 |
AAAAAAAAAA |
题目名称 |
单词默写 |
最终得分 |
100 |
用户昵称 |
~玖湫~ |
是否通过 |
通过 |
代码语言 |
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(){;}