记录编号 315818 评测结果 AAAAAAAAAA
题目名称 [Youdao2010] 有道搜索框 最终得分 100
用户昵称 GravatarAntiLeaf 是否通过 通过
代码语言 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;
}