#include <bits/stdc++.h>
using namespace std;
const int MAX = 2e5;
vector<int> letter(MAX), dep(MAX);
vector<bool> ni(MAX, false), em(MAX, false);
vector<vector<int>> children(MAX, vector<int>(26, -1));
bool emilija(int n);
bool nina(int n) {
for (int i = 0; i < 26; i++) {
if (children[n][i] != -1 && ni[children[n][i]]) {
if (!emilija(children[n][i])) {
return true;
}
}
}
return false;
}
bool emilija(int n) {
for (int i = 0; i < 26; i++) {
if (children[n][i] != -1 && em[children[n][i]]) {
if (!nina(children[n][i])) {
return true;
}
}
}
return false;
}
int main() {
int N, M, cur, cnt = 1, l;
string word;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> word;
cur = 0;
for (int j = 0; j < word.size(); j++) {
l = word[j] - 'a';
if (children[cur][l] == -1) {
children[cur][l] = cnt;
dep[cnt] = dep[cur] + 1;
letter[cur = cnt++] = l;
} else {
cur = children[cur][l];
}
ni[cur] = true;
}
}
cin >> M;
for (int i = 0; i < M; i++) {
cin >> word;
cur = 0;
for (int j = 0; j < word.size(); j++) {
l = word[j] - 'a';
if (children[cur][l] == -1) {
children[cur][l] = cnt;
dep[cnt] = dep[cur] + 1;
letter[cur = cnt++] = l;
} else {
cur = children[cur][l];
}
em[cur] = true;
}
}
cout << (nina(0) ? "Nina" : "Emilijia");
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |