记录编号 |
35792 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[Youdao2010] 有道搜索框 |
最终得分 |
100 |
用户昵称 |
Truth.Cirno |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.461 s |
提交时间 |
2012-03-02 22:15:02 |
内存使用 |
0.53 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
struct wordtype
{
int len;
char ch[23];
}word[10002];
wordtype question;
bool flag;
void swap(wordtype &x,wordtype &y)
{
wordtype temp;
temp=x;
x=y;
y=temp;
}
void qqsort(int l,int r)
{
int ll,rr;
wordtype temp;
ll=l;
rr=r;
temp=word[rand()%(r-l+1)+l];
while (ll<=rr)
{
while (strcmp(word[ll].ch,temp.ch)<0)
ll++;
while (strcmp(word[rr].ch,temp.ch)>0)
rr--;
if (ll<=rr)
{
swap(word[ll],word[rr]);
ll++;
rr--;
}
}
if (l<rr)
qqsort(l,rr);
if (ll<r)
qqsort(ll,r);
}
void cap(int l,int r,int deep)
{
int i;
if (question.len<deep)
{
int c=0;
bool flag2=false;
for (i=l;c<8&&i<=r;i++,c++)
{
flag=true;
if (c==7||i==r)
{
flag2=true;
break;
}
printf("%s ",word[i].ch);
}
if (flag2)
printf("%s",word[i].ch);
return;
}
int ll=l,rr=r;
for (i=l;i<=r;i++)
if (question.ch[deep-1]==word[i].ch[deep-1])
break;
ll=i;
for (;i<=r;i++)
{
if (question.ch[deep-1]!=word[i].ch[deep-1])
break;
}
rr=i-1;
if (ll<=rr)
cap(ll,rr,deep+1);
}
int main(void)
{
freopen("youdao.in","r",stdin);
freopen("youdao.out","w",stdout);
int i,j,n=0,q/*,pos*/;
scanf("%d\n",&n);
if (n==0)
return(0);
for (i=0;i<n;i++)
{
// pos=0;
// flag=true;
// while (flag)
// {
// cin.get(word[i].ch[pos]);
// if (word[i].ch[pos]=='\n')
// flag=false;
// if (word[i].ch[pos]=='\n'||(word[i].ch[pos]>='a'&&word[i].ch[pos]<='z'))
// pos++;
// }
// word[i].ch[pos-1]=0;
scanf("%s\n",word[i].ch);
word[i].len=strlen(word[i].ch);
}
qqsort(0,n-1);
for (i=n-1;i>=1;i--)
if (strcmp(word[i].ch,word[i-1].ch)==0)
{
for (j=i+1;j<n;j++)
word[j-1]=word[j];
n--;
}
scanf("%d\n",&q);
for (i=0;i<q;i++)
{
// pos=0;
// flag=true;
// while (flag)
// {
// cin.get(question.ch[pos]);
// if (question.ch[pos]=='\n')
// flag=false;
// if (question.ch[pos]=='\n'||(question.ch[pos]>='a'&&question.ch[pos]<='z'))
// pos++;
// }
// question.ch[pos-1]=0;
scanf("%s\n",question.ch);
question.len=strlen(question.ch);
flag=false;
cap(0,n-1,1);
if (!flag)
printf("%s",question.ch);
printf("\n");
}
return(0);
}