Submission #649079

# Submission time Handle Problem Language Result Execution time Memory
649079 2022-10-09T09:06:59 Z Elias_Obeid Vlak (COCI20_vlak) C++17
0 / 70
221 ms 524288 KB
#include <bits/stdc++.h>
using namespace std;

const int A = 26;
const int LEN = 200'000;
const int NODES = LEN * A;

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, NODES> 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
1 Runtime error 195 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 194 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 192 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 192 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 204 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 195 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 221 ms 524288 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -