#include <bits/stdc++.h>
using namespace std;
const int MXN = 2e5 + 5;
int nd = 1;
int dp[MXN], has[MXN], dep[MXN];
int adj[26][MXN];
void add(string &s, int f)
{
int cur = 1;
for (int i = 0; i < s.length(); i++)
{
if (!adj[s[i] - 'a'][cur]) adj[s[i] - 'a'][cur] = ++nd;
dep[adj[s[i] - 'a'][cur]] = dep[cur] ^ 1;
cur = adj[s[i] - 'a'][cur];
has[cur] |= (1 << f);
}
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
string s;
cin >> s;
add(s, 0);
}
int m;
cin >> m;
for (int i = 1; i <= m; i++)
{
string s;
cin >> s;
add(s, 1);
}
for (int i = nd; i >= 1; i--)
{
for (int j = 0; j < 26; j++)
{
if (!adj[j][i]) continue;
if (!dep[i] && !(has[adj[j][i]] & 1)) continue;
if (dep[i] && !(has[adj[j][i]] & 2)) continue;
dp[i] |= !dp[adj[j][i]];
}
}
if (dp[1]) 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... |