#include<bits/stdc++.h>
using namespace std;
#define int long long
struct node{
node* v[26];
string p;
char c;
bool k;
node(string _p, bool _k): p(_p), k(_k) {}
void add(string s,int i){
if(i==s.size()) return;
if(!v[s[i]-'a'])
v[s[i]-'a']=new node(p+s[i],k^1);
v[s[i]-'a']->add(s,i+1);
}
bool qry(){
for(auto&nx:v) if(nx&&nx->qry()==k^1)
return k^1;
return k;
}
} *root;
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n; cin>>n;
root=new node("",1);
for(int i=0;i<n;++i){
string s,r=""; cin>>s;
for(int i=0;i<(int)s.size();++i){
r+=s[i];
if(i&1^1) root->add(r,0);
}
}
int m; cin>>m;
for(int i=0;i<m;++i){
string s,r=""; cin>>s;
for(int i=0;i<(int)s.size();++i){
r+=s[i];
if(i&1) root->add(r,0);
}
}
cout<<(root->qry()?"Emilija\n":"Nina\n");
return 0;
}
# | 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... |