제출 #1364484

#제출 시각아이디문제언어결과실행 시간메모리
1364484vjudge1Vlak (COCI20_vlak)C++20
70 / 70
15 ms13984 KiB
#include<bits/stdc++.h>
using namespace std;
int n,m,bh=1;
string word;
map<int,int>Trie[200005];
bool N[200005]; //N[i]==1????i??Nina
bool E[200005]; //E[i]==1????i??Emilija
void Insert_Nina_Word(){
    int p=1;
    for(int i=0;i<word.size();i++){
        int Py=int(word[i]-'a');
        if(!Trie[p].count(Py)){
            Trie[p][Py]=++bh;
        }
        p=Trie[p][Py];
        N[p]=1;
    }
}
void Insert_Emilija_Word(){
    int p=1;
    for(int i=0;i<word.size();i++){
        int Py=int(word[i]-'a');
        if(!Trie[p].count(Py)){
            Trie[p][Py]=++bh;
        }
        p=Trie[p][Py];
        E[p]=1;
    }
}
bool DFS(int p,int deep){ //deep%2==0???Nina?????Emilija
    bool ans=0;
    if(deep%2==0){
        for(auto i=Trie[p].begin();i!=Trie[p].end();i++){
            if(N[i->second]&&!E[i->second])return 1;
            if(N[i->second]&&E[i->second])ans|=DFS(i->second,deep+1);
        }
        return ans;
    }else{
        for(auto i=Trie[p].begin();i!=Trie[p].end();i++){
            if(!N[i->second]&&E[i->second])return 0;
            if(N[i->second]&&E[i->second])ans|=!DFS(i->second,deep+1);
        }
        return !ans;
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>word;
        Insert_Nina_Word();
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>word;
        Insert_Emilija_Word();
    }
    cout<<(DFS(1,0)?"Nina":"Emilija"); //??1?Nina?????Emilija??
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…