Submission #1150416

#TimeUsernameProblemLanguageResultExecution timeMemory
1150416luishghVlak (COCI20_vlak)C++20
20 / 70
1097 ms32260 KiB
#include <bits/stdc++.h> using namespace std; #define _ ios_base::sync_with_stdio(0);cin.tie(0); #define endl '\n' typedef long long ll; const int INF = 0x3f3f3f3f; const ll LINF = 0x3f3f3f3f3f3f3f3fll; const int SIG = 26 + 10; vector<string> d; struct node { vector<int> to; vector<int> col; bool term; node(bool _term = false): term(_term) { to.assign(SIG, -1); col.assign(SIG, 0); } }; struct trie { vector<node> t; vector<bool> w[2]; // w[0][i] => i is winning for player 0, if 0 starts int idx = 0; trie() { t.push_back(node()); w[0].push_back(false); w[1].push_back(false); idx++; } void insert(const string& s, int p) { int i = 0; for (char c : s) { t[i].col[c-'a'] |= (1 << p); if (t[i].to[c-'a'] != -1) { i = t[i].to[c-'a']; continue; } t.push_back(node()); w[0].push_back(false); w[1].push_back(false); t[i].to[c-'a'] = idx; i = idx; idx++; } t[i].term = true; } int go(int i, char cc) { int c = cc - 'a'; return t[i].to[c]; } void dfs(int v) { // 0 starts: for (int p = 0; p < 2; p++) { int op = p ^ 1; w[p][v] = false; for (int c = 0; c < SIG; c++) { if (!(t[v].col[c] & (1 << p))) continue; int ww; if ((ww = t[v].to[c]) != -1) { dfs(ww); w[p][v] = w[p][v] or !w[op][ww]; } } } } }; int main() {_ struct trie t; int n; cin >> n; while(n--) { string s; cin >> s; t.insert(s, 0); } cin >> n; while(n--) { string s; cin >> s; t.insert(s, 1); } t.dfs(0); if (t.w[0][0]) cout << "Nina" << endl; else cout << "Emilija" << endl; 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...