Submission #1167633

#TimeUsernameProblemLanguageResultExecution timeMemory
1167633maanayush_17Vlak (COCI20_vlak)C++20
30 / 70
24 ms24920 KiB
#include <bits/stdc++.h>
using namespace std;

struct TrieNode {
    bool is_nina = false, is_emilija = false;
    TrieNode* children[26] = {nullptr};
};

class Trie {
public:
    TrieNode* root;
    Trie() { root = new TrieNode(); }

    void insert(const string &word, bool is_nina) {
        TrieNode* node = root;
        for (char c : word) {
            int index = c - 'a';
            if (!node->children[index]) {
                node->children[index] = new TrieNode();
            }
            node = node->children[index];
        }
        if (is_nina) node->is_nina = true;
        else node->is_emilija = true;
    }
};

unordered_map<TrieNode*, bool> memo;

bool isWinning(TrieNode* node) {
    if (memo.count(node)) return memo[node];

    bool canMove = false, hasLosingChild = false;
    for (TrieNode* child : node->children) {
        if (child) {
            canMove = true;
            if (!isWinning(child)) hasLosingChild = true;
        }
    }
    return memo[node] = (canMove && hasLosingChild);
}

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

    int n, m;
    cin >> n;
    Trie trie;
    
    for (int i = 0; i < n; i++) {
        string word;
        cin >> word;
        trie.insert(word, true);
    }
    
    cin >> m;
    for (int i = 0; i < m; i++) {
        string word;
        cin >> word;
        trie.insert(word, false);
    }

    cout << (isWinning(trie.root) ? "Nina" : "Emilija") << "\n";
    return 0;
}
#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...