Submission #439454

#TimeUsernameProblemLanguageResultExecution timeMemory
439454ldn694Vlak (COCI20_vlak)C++17
70 / 70
13 ms10060 KiB
#include <bits/stdc++.h>
#define fu(i, a, b) for (int i = a; i <= b; i++)
#define fd(i, a, b) for (int i = a; i >= b; i--)
using namespace std;
const int N = 2e5 + 10;
int num[2];
int trie[N][27], sz = 0;
bool ticket[N][2];
void Insert(const string &a, int o)
{
    int pos = 0;
    for (char x : a)
    {
        int v = int(x) - 96;
        if (!trie[pos][v]) trie[pos][v] = ++sz;
        ticket[trie[pos][v]][o] = true;
        pos = trie[pos][v];
    }
}
bool win(int u, int o)
{
    bool passed = false;
    fu(i, 1, 26)
    {
        if (!trie[u][i]) continue;
        if (!ticket[trie[u][i]][o]) continue;
        passed |= !win(trie[u][i], 1 - o);
        if (passed) break;
    }
    return passed;
}
int main()
{
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);
    fu(i, 0, 1)
    {
        cin >> num[i];
        fu(j, 1, num[i])
        {
            string s;
            cin >> s;
            Insert(s, i);
        }
    }
    cout << (win(0, 0) ? "Nina" : "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...