Submission #1195869

#TimeUsernameProblemLanguageResultExecution timeMemory
1195869anonymous321Vlak (COCI20_vlak)C++20
70 / 70
15 ms13224 KiB
// https://oj.uz/problem/view/COCI20_vlak #include <bits/stdc++.h> using namespace std; struct node { vector<int> child = vector<int> (26, -1); bool nina = false; bool emilija = false; }; vector<node> t {{}}; void insert (string &s, bool nina, int id = 0, int i = 0) { if (nina) { t[i].nina = true; } else { t[i].emilija = true; } if (s.size() == id) return; int c = s[id] - 'a'; if (t[i].child[c] == -1) { t.push_back({}); t[i].child[c] = t.size() - 1; } insert(s, nina, id+1, t[i].child[c]); } bool dfs (int i, bool nina) { bool win = false; for (int c = 0; c < 26; c++) { if (t[i].child[c] == -1) continue; if (nina && !t[t[i].child[c]].nina) continue; if (!nina && !t[t[i].child[c]].emilija) continue; if (!dfs(t[i].child[c], !nina)) { win = true; } } return win; } int main() { cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; for (int i = 0; i < n; i++) { string s; cin >> s; insert(s, true); } int m; cin >> m; for (int i = 0; i < m; i++) { string s; cin >> s; insert(s, false); } if (dfs(0, true)) { cout << "Nina\n"; } else { cout << "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...