#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define tt tuple<int,int,int>
#define NMAX 100005
#define MOD 1000000007
#define faster ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
struct node {
map<int, int> next;
int id, sz, marc[2];
node(){
id = -1;
next.clear();
sz = marc[0] = marc[1] = 0;
}
};
vector<node> tri = {node()};
string resp;
int new_node() {
tri.push_back(node());
return tri.size()-1;
}
void insere(string &s, int i, bool player) {
int k = 0;
for(int j = 0; j < s.size(); j++) {
if(!tri[k].next.count(s[j])) {
tri[k].next[s[j]] = new_node();
}
k = tri[k].next[s[j]];
tri[k].marc[player] = 1;
tri[k].sz = j+1;
}
tri[k].id = i;
}
int32_t main() { faster
int n;
cin>>n;
for(int i = 1; i <= n; i++) {
string s;
cin>>s;
insere(s, i, 0);
}
int m;
cin>>m;
for(int i = 1; i <= m; i++) {
string s;
cin>>s;
insere(s, i, 1);
}
vector<int> dp(tri.size(), 0);
for(int i = tri.size()-1; i >= 0; i--) {
if(tri[i].next.empty())
continue;
bool player = tri[i].sz & 1;
for(auto [c, it] : tri[i].next) {
if(!tri[it].marc[player]) continue;
if(!dp[it]) dp[i] = 1;
}
}
if(dp[0]) cout<<"Nina\n";
else cout<<"Emilija\n";
}
/*
*/
# | 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... |