#include <bits/stdc++.h>
using namespace std;
#define ll long long
//#pragma GCC optimize("O3,unroll-loops")
//#define int ll
#define ld long double
#define all(x) x.begin(), x.end()
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
//template <class T>
//using ordered_set =
// tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define file \
freopen("yinyang.in", "r", stdin);\
freopen("yinyang.out", "w", stdout)
#define OJudge(in,out) \
(void)freopen(in, "r", stdin);\
(void)freopen(out, "w", stdout)
#define FIn \
cin.tie(0); \
cout.tie(0); \
ios_base::sync_with_stdio(false)
#define rep(i, a, b) for(int i = a; i < (b); ++i)
//#define sz(x) (int)(x).size()
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
const string IN = "input.txt";
const string OUT = "output.txt";
int tc;
ll n , m ,w, c , a, q, b,d;
struct Trie{
struct Node {
Node *ch[26];
bool frst , sec;
Node() {
frst = sec = 0;
memset(ch, 0, sizeof ch);
}
};
Node *root = new Node();
void insert(const string &s, bool f) {
Node *curr = root;
for (char x: s) {
ll pos = x - 'a';
if (curr->ch[pos] == 0)curr->ch[pos] = new Node();
curr = curr->ch[pos];
f ? curr->frst = 1 : curr->sec = 1;
}
}
bool ans(Node *cur, int nw){
if(nw%2){
if(!cur->sec)
return 1;
bool t = 1;
for(auto s : cur->ch){
if(!s)
continue;
if(s->sec){
t &= ans(s , nw + 1);
}
}
return t;
}else{
if(!cur->frst)
return 0;
bool t = 0;
for(auto s : cur->ch){
if(!s)
continue;
if(s->frst)
t |= ans(s , nw + 1);
}
return t;
}
}
bool ans(){
bool t = 0;
for(auto s : root->ch) {
if(s == 0)
continue;
t |= ans(s, 1);
}
return t;
}
};
void solve() {
cin>>n;
string str;
Trie tr;
for(int i = 0; i < n; i++){
cin>>str;
tr.insert(str , 1);
}
cin>>n;
for(int i = 0; i < n; i++){
cin>>str;
tr.insert(str , 0);
}
cout<<(tr.ans()?"Nina": "Emilija");
}
signed main() {
FIn;
// file;
// #ifndef ONLINE_JUDGE
// OJudge(IN.c_str(),OUT.c_str());
// #endif
bool test = 0;
if (test)
cin>>tc;
else tc = 1;
for (int i = 1; i<=tc; i++){
// cout<<"Case #"<<i<<": ";
solve();
}
}
| # | 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... |