Submission #1309830

#TimeUsernameProblemLanguageResultExecution timeMemory
1309830SSKMFVlak (COCI20_vlak)C++20
70 / 70
15 ms10060 KiB
#include <bits/stdc++.h> using namespace std; struct Nod { bool posibil[2] = { } , gasit[2] = { }; int urmatorul[26] = { }; } arbore[200001]; int numar_noduri = 1; string sir; inline void Insert (const int tip) { int nod = 1; for (auto caracter : sir) { if (!arbore[nod].urmatorul[caracter - 'a']) { arbore[nod].urmatorul[caracter - 'a'] = ++numar_noduri; } nod = arbore[nod].urmatorul[caracter - 'a']; arbore[nod].gasit[tip] = true; } } inline void Parcurgere (const int nod) { if (!nod) { return; } for (int indice = 0 ; indice < 26 ; indice++) { Parcurgere(arbore[nod].urmatorul[indice]); arbore[nod].posibil[0] |= (!arbore[arbore[nod].urmatorul[indice]].posibil[1] && arbore[arbore[nod].urmatorul[indice]].gasit[0]); arbore[nod].posibil[1] |= (!arbore[arbore[nod].urmatorul[indice]].posibil[0] && arbore[arbore[nod].urmatorul[indice]].gasit[1]); } } inline void Solve () { int cantitate; cin >> cantitate; while (cantitate--) { cin >> sir; Insert(0); } cin >> cantitate; while (cantitate--) { cin >> sir; Insert(1); } Parcurgere(1); cout << (arbore[1].posibil[0] ? "Nina" : "Emilija"); } int main () { ios :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int numar_teste = 1; // cin >> numar_teste; while (numar_teste--) { Solve(); } 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...