Submission #1235075

#TimeUsernameProblemLanguageResultExecution timeMemory
1235075anarch_yVlak (COCI20_vlak)C++17
70 / 70
10 ms10568 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) begin(x), end(x)
#define sz(x) (int)x.size()
#define pb push_back

struct Trie{
    static const int wmax = 2e6;
    int trie[wmax][26];
    int A[wmax][2], dp[wmax];
    int num;
 
    void insert(string x, int b){
        int cur = 0;
        A[cur][b] = 1;
        for(auto t: x){
            int c = t - 'a';
            if(trie[cur][c] == 0){
                trie[cur][c] = ++num;
            }
            A[trie[cur][c]][b] = 1;
            cur = trie[cur][c];
        }
    }

    void dfs(int cur, int b){
        for(int c=0; c<26; c++){
            if(trie[cur][c] and A[trie[cur][c]][b]){
                dfs(trie[cur][c], 1-b);
                if(dp[trie[cur][c]] == 0) dp[cur] = 1;
            }
        }
    }
};   

Trie T;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n; cin >> n;
    for(int i=0; i<n; i++){
        string s; cin >> s;
        T.insert(s, 0);
    }
    int m; cin >> m;
    for(int i=0; i<m; i++){
        string s; cin >> s;
        T.insert(s, 1);
    }
    T.dfs(0, 0);
    if(T.dp[0]) cout << "Nina";
    else cout << "Emilija"; 
}
#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...