记录编号 |
315818 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Youdao2010] 有道搜索框 |
最终得分 |
100 |
用户昵称 |
AntiLeaf |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.112 s |
提交时间 |
2016-10-05 21:13:00 |
内存使用 |
0.34 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<set>
using namespace std;
bool ispreffix(const string&,const string&);
int n,m,cnt;
string s,ss;
char c[30];
string a[10010];
string *it;
int main(){
#define MINE
#ifdef MINE
freopen("youdao.in","r",stdin);
freopen("youdao.out","w",stdout);
#endif
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf(" %s",c);
a[i]=c;
}
sort(a,a+n);
scanf("%d",&m);
while(m--){
scanf("%s",c);
cnt=0;
ss=s=c;
if(binary_search(a,a+n,s)){
printf("%s ",s.c_str());
cnt++;
}
while(cnt<8){
it=upper_bound(a,a+n,ss);
if(it==a+n||!ispreffix(s,*it))break;
printf("%s ",it->c_str());
ss=*it;
cnt++;
}
if(!cnt)printf("%s ",s.c_str());
printf("\n");
}
#ifndef MINE
printf("\n-------------------------DONE--------------------\n");
for(;;);
#endif
return 0;
}
bool ispreffix(const string &s,const string &ss){
int n=s.size(),m=ss.size();
if(n>m)return false;
for(int i=0;i<n;i++)if(s[i]!=ss[i])return false;
return true;
}