#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) begin(x), end(x)
#define sz(x) (int)x.size()
#define pb push_back
struct Trie{
static const int wmax = 2e6;
int trie[wmax][26];
int A[wmax][2], dp[wmax];
int num;
void insert(string x, int b){
int cur = 0;
A[cur][b] = 1;
for(auto t: x){
int c = t - 'a';
if(trie[cur][c] == 0){
trie[cur][c] = ++num;
}
A[trie[cur][c]][b] = 1;
cur = trie[cur][c];
}
}
void dfs(int cur, int b){
for(int c=0; c<26; c++){
if(trie[cur][c] and A[trie[cur][c]][b]){
dfs(trie[cur][c], 1-b);
if(dp[trie[cur][c]] == 0) dp[cur] = 1;
}
}
}
};
Trie T;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
for(int i=0; i<n; i++){
string s; cin >> s;
T.insert(s, 0);
}
int m; cin >> m;
for(int i=0; i<m; i++){
string s; cin >> s;
T.insert(s, 1);
}
T.dfs(0, 0);
if(T.dp[0]) cout << "Nina";
else cout << "Emilija";
}
# | 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... |