Submission #1161760

#TimeUsernameProblemLanguageResultExecution timeMemory
1161760ezzatw122Vlak (COCI20_vlak)C++20
0 / 70
6 ms12176 KiB
#include <bits/stdc++.h>


// you just try again
using namespace std;
#define ll long long

void read() {
# ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
# endif
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
}


const int N = 1e5 + 5, M = 2;

struct Node {
    int chid[26], lvl, cnt[2];

    Node() {
        for (int i = 0; i < 26; ++i)chid[i] = -1;
        lvl = cnt[0] = cnt[1] = 0;
    }
};

Node Trie[N];
int len;

void add(string s, int type){
    int node = 0;
    Trie[node].cnt[type]++;

    int lvl = 0;
    for (char c: s){
        int pos = c - 'a';
        if (Trie[node].chid[pos] == -1)
            Trie[node].chid[pos] = ++len;
        node = Trie[node].chid[pos];
        Trie[node].lvl = ++lvl;
        Trie[node].cnt[type]++;
    }
}

int dp[N], n, m;

int solve(int node) {
    int &ret = dp[node];
    if (~ret)return ret;
    ret = 0;
    int turn = Trie[node].lvl & 1;
    if (!Trie[node].cnt[turn])return ret = 0;
    for (int i = 0; i < 26; ++i) {
        if (Trie[node].chid[i] != -1)ret |= !solve(Trie[node].chid[i]);
    }
    return ret;
}

void code() {
    cin >> n;
    memset(dp, -1, sizeof dp);
    for (int i = 0; i < n; ++i) {
        string s;
        cin >> s;
        add(s, 0);
    }
    cin >> m;
    for (int i = 0; i < m; ++i) {
        string s;
        cin >> s;
        add(s, 1);
    }
    cout << (solve(0) ? "Nina" : "Emilija");
}


int main() {

    read();
    int t = 1;
    // cin >> t;
    while (t--)code();
}


Compilation message (stderr)

Main.cpp: In function 'void read()':
Main.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen("input.txt", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:11:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen("output.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...