比赛 “Asm.Def战记之太平洋”杯 评测结果 WWWWWWWTTT
题目名称 Asm.Def谈笑风生 最终得分 0
用户昵称 woca 运行时间 6.024 s
代码语言 C++ 内存使用 2.25 MiB
提交时间 2015-11-02 10:39:01
显示代码纯文本
#include <cmath>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cstdlib>
#include <iostream>
#include <algorithm>

using namespace std;

struct str{
    int len;
    char c[30];
    void init(){memset(c,0,sizeof(c));}
};

bool operator < (str a,str b){
    if(a.len == b.len){
        for(int i=0;i<a.len;i++){
            if(a.c[i]!=b.c[i]){
                a.c[i] < b.c[i];
            }
        }
    }
    else
        a.len < b.len;
}

bool operator == (str a,str b){
    if(a.len!=b.len) return false;
    for(int i=0;i<a.len;i++)
        if(a.c[i]!=b.c[i])
            return false;
    return true;
}

int cnt=0;
str signal[100010];

int found(str s,int l,int r){
    if(l==r){
        if(s==signal[l]) return 1;
        else return 0;
    }
    int m=(l+r)/2;
    if(s==signal[m]) return m;
    else if(signal[m]<s) return found(s,m+1,r);
    else return found(s,l,m);
}

int main(){
    freopen("asm_talk.in","r",stdin);
    freopen("asm_talk.out","w",stdout);
    int m,t;
    str temp;
    scanf("%d",&m);
    while(m--){
        temp.init();
        scanf("%d",&t);
        scanf("%s",&temp.c);
        temp.len=strlen(temp.c);
        if(t==1)
            signal[cnt++]=temp;
        else{
            sort(signal,signal+cnt);
            bool ok=false;int x;
            for(int i=0;i<temp.len;i++){
                if(temp.c[i]=='*'){
                    ok=true;x=i;break;
                }
            }
            if(!ok){
                int ans=found(temp,0,cnt-1);
                if(ans) printf("Yes\n");
                else printf("No\n");
            }
            else{
                int ans=0;
                for(int i=0;i<26;i++){
                    temp.c[x]=char('a'+i);
                    ans=max(ans,found(temp,0,cnt-1));
                }
                if(ans) printf("Yes\n");
                else printf("No\n");
            }
        }
    }
    return 0;
}