Submission #632864

#TimeUsernameProblemLanguageResultExecution timeMemory
632864van_hoangVlak (COCI20_vlak)C++17
70 / 70
45 ms102716 KiB
#include "bits/stdc++.h"

using namespace std;

#ifndef LOCAL
#define debug(...) 86
#endif

const int maxN = 1e6 + 5;
int N, M, nxt = 1, mask[maxN][26], state[maxN];
queue<int> qu;

string ans[2] = {"Emilija", "Nina"};

bool DFS(int u, int turn) {
    if (!(state[u] & (1 << turn))) return false;
    for (int j = 0; j < 26; ++j) {
        if (mask[u][j] != -1 && !DFS(mask[u][j], turn ^ 1)) {
            return true;
        }
    }
    return false;
}

int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    
    cin >> N;
    memset(mask, -1, sizeof mask);
    state[1] = 3;
    for (int i = 0; i < N; ++i) {
        string s; cin >> s;
        int cur = 1;
        for (auto &x : s) {
            int j = x - 'a';
            if (mask[cur][j] != -1) {
                cur = mask[cur][j];
            }
            else {
                mask[cur][j] = ++nxt;
                cur = nxt;
            }
            state[cur] |= 1;
        }
    }
    cin >> M;
    for (int i = 0; i < M; ++i) {
        string s; cin >> s;
        int cur = 1;
        for (auto &x : s) {
            int j = x - 'a';
            if (mask[cur][j] != -1) {
                cur = mask[cur][j];
            }
            else {
                mask[cur][j] = ++nxt;
                cur = nxt;
            }
            state[cur] |= 2;
        }
    }
    cout << ans[DFS(1, 0)] << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...