This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "bits/stdc++.h"
using namespace std;
#define int int64_t
#define pb push_back
const int lim=1e6+100;
const int mod=1e9+7;
using pii=pair<int,int>;
int sum(int i,int j){
if(i+j<mod)return i+j;
return i+j-mod;
}
struct trie{
struct node{
int c[26];
bool dude[2];
};
node nds[lim];
int nextunused=2;
void insert(const string&s,bool curdude){
int cur=1;
int i=0;
while(i<s.size()){
if(nds[cur].c[s[i]-'a']==0){
nds[cur].c[s[i]-'a']=nextunused++;
}
cur=nds[cur].c[s[i++]-'a'];
}
nds[cur].dude[curdude]=1;
}
struct iterator{
trie*par;
int cur;
iterator(trie*par,int b):par(par),cur(b){}
node* operator()(){
return par->nds+cur;
}
void operator+=(char cc){
cur=par->nds[cur].c[cc-'a'];
}
bool operator==(const iterator&it){
return par==it.par&&cur==it.cur;
}
};
const iterator begin() {
return iterator(this,1);
};
const iterator end(){
return iterator(this,0);
}
bool retwin(node*p,bool turn){
bool have=0;
int children=0;
for(int i=0;i<26;i++){
if(p->c[i]){
children++;
if(retwin(nds+p->c[i],!turn)==turn){
have=1;
}
p->dude[0]|=nds[p->c[i]].dude[0];
p->dude[1]|=nds[p->c[i]].dude[1];
}
}
if(p->dude[turn]&&have)return turn;
return !turn;
}
bool retwin(){
return retwin(nds+1,0);
}
}tr;
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#ifdef Local
freopen(".in","r",stdin); freopen(".out","w",stdout);
#endif
int n;
cin>>n;
for(int i=0;i<n;i++){
string s;
cin>>s;
tr.insert(s,0);
}
int m;
cin>>m;
for(int i=0;i<m;i++){
string s;
cin>>s;
tr.insert(s,1);
}
bool res=tr.retwin();
if(res)cout<<"Emilija\n";
else cout<<"Nina\n";
}
Compilation message (stderr)
Main.cpp: In member function 'void trie::insert(const string&, bool)':
Main.cpp:29:16: warning: comparison of integer expressions of different signedness: 'int64_t' {aka 'long int'} and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
29 | while(i<s.size()){
| ~^~~~~~~~~
# | 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... |