Submission #1154426

#TimeUsernameProblemLanguageResultExecution timeMemory
1154426gelastropodVlak (COCI20_vlak)C++20
70 / 70
47 ms31448 KiB
#include <bits/stdc++.h> using namespace std; #define int long long vector<vector<int>> adjlist; vector<int> depth; vector<bool> hasN, hasE; vector<bool> win; bool dfs(int n) { bool mt = true; for (int i : adjlist[n]) if (i != -1) mt = false; if (mt) return win[n] = (depth[n] % 2 ? hasN[n] : !hasE[n]); bool cwin = (depth[n] % 2); for (int i : adjlist[n]) { if (i != -1) { depth[i] = depth[n] + 1; bool winn = dfs(i); if (!(depth[n] % 2)) { cwin = cwin || winn; } else { cwin = cwin && winn; } } } return win[n] = cwin; } signed main() { int n, m; string s; int count = 0; adjlist.push_back(vector<int>(26, -1)); hasN.push_back(true); hasE.push_back(true); vector<string> strings; strings.push_back(""); cin >> n; for (int i = 0; i < n; i++) { cin >> s; int crnt = 0; for (int j = 0; j < s.size(); j++) { if (adjlist[crnt][s[j] - 'a'] == -1) { adjlist.push_back(vector<int>(26, -1)); crnt = adjlist[crnt][s[j] - 'a'] = ++count; hasN.push_back(true); hasE.push_back(false); strings.push_back(s.substr(0, j + 1)); } else { crnt = adjlist[crnt][s[j] - 'a']; } } } cin >> m; for (int i = 0; i < m; i++) { cin >> s; int crnt = 0; for (int j = 0; j < s.size(); j++) { if (adjlist[crnt][s[j] - 'a'] == -1) { adjlist.push_back(vector<int>(26, -1)); crnt = adjlist[crnt][s[j] - 'a'] = ++count; hasE.push_back(true); hasN.push_back(false); strings.push_back(s.substr(0, j + 1)); } else { hasE[crnt] = true; crnt = adjlist[crnt][s[j] - 'a']; } } hasE[crnt] = true; } depth = vector<int>(count + 1, 0); win = vector<bool>(count + 1, false); cout << (dfs(0) ? "Nina" : "Emilija") << '\n'; }
#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...