Submission #1168527

#TimeUsernameProblemLanguageResultExecution timeMemory
1168527escobrandVlak (COCI20_vlak)C++20
70 / 70
7 ms10564 KiB
#include <bits/stdc++.h>

using namespace std;
#define all(v) v.begin(),v.end()
#define eb emplace_back
#define ll long long 
#define fi first
#define se second
int t,n,i;
const int maxn = 3e5 + 10;
string s;
struct trie
{
  int co = 0;
  struct nodes
  {
    int child[26] = {};
  }node[maxn];
  
  void add(string s)
  {
    int pos = 0;
    for(char ch : s)
    {
      if(node[pos].child[ch - 'a'] == 0)node[pos].child[ch - 'a'] = ++co;
      pos = node[pos].child[ch - 'a'];
    }
  }
  
}a,b;

bool cal(int i,int j,bool ch)
{
  for(int k = 0;k<26;k++)
  {
    if(ch)
    {
      if(!a.node[i].child[k] && b.node[j].child[k])return ch;
    }
    else
    {
      if(a.node[i].child[k] && !b.node[j].child[k])return ch;
    }
    if(a.node[i].child[k] && b.node[j].child[k] && cal(a.node[i].child[k],b.node[j].child[k],!ch) == ch)return ch;
  }
  return !ch;
}


int main()
{

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin>>n;
    
    while(n--)
    {
      cin>>s;
      a.add(s);
    }
    
    cin>>n;
    
    while(n--)
    {
      cin>>s;
      b.add(s);
    }
    
    cout<<(cal(0,0,0) ? "Emilija" : "Nina");
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...