PersonalCorpus 版 (精华区)

1218838 Big Guava ... 10393 Accepted
0:00.002 64 2002/11/06 04:44:30.632

// Thanks to pamws@HIT

int cmp (const void *a ,const void *b)
{
    return strcmp((char *)a, (char *)b);
}

void main()
{
#ifndef ONLINE_JUDGE
    freopen("k:\\uva\\i10393","r",stdin);
    freopen("k:\\uva\\o10393","w",stdout);
#endif

    int i,j,k,t,m,n;
    bool ok[256],a5,a6;
    char s[1000][51];
    
    while (scanf("%d%d\n",&m,&n)==2) {
        memset(ok,1,sizeof(ok)); a5=false; a6=false;
        for (i=0;i<m;i++) {
            scanf("%d",&k);
            if (k==1) {
                ok['q']=false;
                ok['a']=false;
                ok['z']=false;
                continue;
            }
            if (k==2) {
                ok['w']=false;
                ok['s']=false;
                ok['x']=false;
                continue;
            }
            if (k==3) {
                ok['e']=false;
                ok['d']=false;
                ok['c']=false;
                continue;
            }
            if (k==4) {
                ok['r']=false;
                ok['f']=false;
                ok['v']=false;
                ok['t']=false;
                ok['g']=false;
                ok['b']=false;
                continue;
            }
            if (k==5) {
                a5=true;
                continue;
            }
            if (k==6) {
                a6=true;
                continue;
            }
            if (k==7) {
                ok['y']=false;
                ok['h']=false;
                ok['n']=false;
                ok['u']=false;
                ok['j']=false;
                ok['m']=false;
                continue;
            }
            if (k==8) {
                ok['i']=false;
                ok['k']=false;
                ok[',']=false;
                continue;
            }
            if (k==9) {
                ok['o']=false;
                ok['l']=false;
                ok['.']=false;
                continue;
            }
            if (k==10) {
                ok['p']=false;
                ok[';']=false;
                ok['/']=false;
                continue;
            }
        }
        if (a5&&a6) ok[' ']=false;
// Thanks to pamws@HIT
        scanf("\n");
//        gets(s[0]);
        k=0;
        for (i=0;i<n;i++) {
            gets(s[k]);
            for (j=0;s[k][j];j++) if (!ok[s[k][j]]) break;
            if (s[k][j]==0) {
                if (strlen(s[k])>strlen(s[0])) {
                    strcpy(s[0],s[k]);
                    k=1;
                } else if (strlen(s[k])==strlen(s[0])) k++;
            }
        }
        qsort(s,k,51,cmp);
        if (k==0) j=0; else j=1;
        for (i=1;i<k;i++)
            if (strcmp(s[i],s[i-1])!=0) {
                strcpy(s[j],s[i]);
                j++;
            }
        printf("%d\n",j);
        for (i=0;i<j;i++) printf("%s\n",s[i]);
    }
}
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:9.673毫秒