Submission #839491

#TimeUsernameProblemLanguageResultExecution timeMemory
839491LilintaVlak (COCI20_vlak)C++14
70 / 70
14 ms20180 KiB
// COCI 2020/2021 Contest#3 Problem 2 - Vlak #include <bits/stdc++.h> using namespace std; struct Trie { struct Node { Node* child[26]; bool allowNina; bool allowEmilija; Node() { for (int i = 0; i < 26; ++i) { child[i] = nullptr; } allowNina = false; allowEmilija = false; } }; Node* root; Trie() { root = new Node(); } void addString(string &s, bool player) { Node* p = root; for (char f : s) { int c = f - 'a'; if (p -> child[c] == nullptr) { p -> child[c] = new Node(); } p = p -> child[c]; if (player) { p -> allowNina = true; } else { p -> allowEmilija = true; } } } }; int n, m; Trie T; bool isWin(Trie::Node* p, bool player) { if (player) { // Nina for (int c = 0; c <= 25; ++c) { if (p -> child[c] != nullptr && p -> child[c] -> allowNina == true && !isWin(p -> child[c], false)) { return true; } } return false; } else { for (int c = 0; c <= 25; ++c) { if (p -> child[c] != nullptr && p -> child[c] -> allowEmilija == true && !isWin(p -> child[c], true)) { return true; } } return false; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; ++i) { string s; cin >> s; T.addString(s, true); } cin >> m; for (int i = 0; i < m; ++i) { string s; cin >> s; T.addString(s, false); } if (isWin(T.root, true)) { cout << "Nina"; } else { cout << "Emilija"; } 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...