Submission #1175148

#TimeUsernameProblemLanguageResultExecution timeMemory
1175148turnejaVlak (COCI20_vlak)C++20
70 / 70
95 ms141300 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>

using namespace std;
using namespace __gnu_pbds;

#define endl "\n"
#define ll long long
#define IOS ios_base::sync_with_stdio(false); cin.tie(nullptr);

const int MAX = 1e6 + 5;

struct Node {
    int val[2];
    vector<int> child;
    Node() : child(vector<int>(26, -1)) {
        val[0] = 0, val[1] = 0;
    }
};

Node nodes[MAX];
int idx = 0;

void add(int node, int i, int j, string &s) {
    nodes[node].val[j]++;

    if (i == s.size()) {
        return;
    }
    int c = s[i] - 'a';
    if (nodes[node].child[c] == -1) {
        nodes[node].child[c] = idx;
        nodes[idx++] = Node();

    }
    add(nodes[node].child[c], i + 1, j, s);
    return;
}

int dfs(int node, int f) {
    int ans = f;
    for (int i = 0; i < 26; i++) {
        if (nodes[node].child[i] == -1 || nodes[nodes[node].child[i]].val[f] == 0) {
            continue;
        }
        if (f == 0) {
            ans = max(ans, dfs(nodes[node].child[i], 1));
        } else {
            ans = min(ans, dfs(nodes[node].child[i], 0));
        }
    }
    return ans;
}

int main() {
    IOS;
    nodes[idx++] = Node();
    int n, m;
    cin >> n;
    for (int i = 0; i < n; i++) {
        string s;
        cin >> s;
        add(0, 0, 0, s);
    }
    cin >> m;
    for (int i = 0; i < m; i++) {
        string s;
        cin >> s;
        add(0, 0, 1, s);
    }
    string ans = "Nina";
    if (!dfs(0, 0)) {
        ans = "Emilija";
    }
    cout << ans;
    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...