Submission #1271769

#TimeUsernameProblemLanguageResultExecution timeMemory
1271769cbnk32_tuandungVlak (COCI20_vlak)C++17
70 / 70
14 ms21064 KiB
#include <bits/stdc++.h> using namespace std; // quy uoc 0: Nina // 1: Emilija int n,m; int trie[200009][26][2]; int nTrie=0; bool xd[200009][2]; bool L[200009][2]; string tmp; void addTrie(bool mask, string s) { int u = 0; for (int i = 0; i < s.size(); ++i) { if (!trie[u][s[i]-'a'][mask]) trie[u][s[i]-'a'][mask] = ++nTrie; u = trie[u][s[i]-'a'][mask]; } } bool dequy(bool mask, int u1, int u2) { int u = mask ? u2 : u1; if (xd[u][mask]) return L[u][mask]; xd[u][mask]=true; bool best=false; for (int i = 0; i < 26; ++i) { if (trie[u][i][mask]) { int u11 = trie[u1][i][0]; int u22 = trie[u2][i][1]; if ((!u11) || (!u22)) { best = true; break; } best = best || (!(dequy(!mask,u11,u22))); } } return (L[u][mask]=best); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i = 1; i <= n; ++i) { cin >> tmp; addTrie(0,tmp); } cin >> m; for (int i = 1; i <= m; ++i) { cin >> tmp; addTrie(1,tmp); } if (dequy(0,0,0)) cout << "Nina"; else cout << "Emilija"; }
#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...