This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int A = 26;
const int LEN = 200'000;
struct TrieNode
{
    array<bool, 2> players;
    array<int, A> next_nodes;
    TrieNode()
    {
        players.fill(false);
        next_nodes.fill(-1);
    }
};
int N, M;
int current_trie_node = 0;
array<TrieNode, LEN + 1> trie;
int fetchNode()
{
    trie[current_trie_node] = TrieNode();
    return current_trie_node++;
}
const int ROOT = fetchNode();
void addString(const string &S, int player)
{
    int current_node = ROOT;
    for (int i = 0; i < (int)S.size(); ++i)
    {
        int letter = (S[i] - 'a');
        if (trie[current_node].next_nodes[letter] == -1)
        {
            trie[current_node].next_nodes[letter] = fetchNode();
        }
        current_node = trie[current_node].next_nodes[letter];
        trie[current_node].players[player] = true;
    }
}
bool getWinner(int node, int player)
{
    bool won = false;
    for (int letter = 0; letter < A; ++letter)
    {
        if (trie[node].next_nodes[letter] != -1 &&
            trie[trie[node].next_nodes[letter]].players[player])
        {
            won |= !getWinner(trie[node].next_nodes[letter], player ^ 1);
        }
    }
    return won;
}
int main()
{
    cin >> N;
    for (int i = 0; i < N; ++i)
    {
        string S;
        cin >> S;
        addString(S, 0);
    }
    cin >> M;
    for (int i = 0; i < M; ++i)
    {
        string S;
        cin >> S;
        addString(S, 1);
    }
    cout << (getWinner(ROOT, 0) ? "Nina" : "Emilija") << "\n";
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |