Submission #1215323

#TimeUsernameProblemLanguageResultExecution timeMemory
1215323leandroioileleVlak (COCI20_vlak)C++20
70 / 70
26 ms20124 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define faster ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define NMAX 200005 #define pb push_back struct node{ bool ans[2]; unordered_map<char,int>next; node(){ ans[1]=ans[0]=0; next.clear(); } }; vector<node>v; int dp[NMAX]; int inicio; int new_node(){ v.pb(node()); return v.size()-1; } bool solve(int x, int id){ if(id==0 && v[x].ans[id]==0)return false; if(id==1 && v[x].ans[id]==0)return true; if(dp[x]!=-2)return dp[x]; if(id==0){ dp[x]=false; for(auto it:v[x].next){ if(solve(it.second, 1)==true){ dp[x]=true; } } } else{ dp[x]=true; for(auto it:v[x].next){ if(solve(it.second, 0)==false){ dp[x]=false; break; } } } return dp[x]; } int32_t main(){ faster int n; cin>>n; string s; inicio=new_node(); while(n--){ cin>>s; int x=inicio; v[x].ans[0]=v[x].ans[1]=1; for(auto it:s){ if(v[x].next.count(it)==0){ v[x].next[it]=new_node(); } x=v[x].next[it]; v[x].ans[0]=1; } } cin>>n; while(n--){ cin>>s; int x=inicio; v[x].ans[0]=v[x].ans[1]=1; for(auto it:s){ if(v[x].next.count(it)==0){ v[x].next[it]=new_node(); } x=v[x].next[it]; v[x].ans[1]=1; } } for(int i=0; i<NMAX; i++){ dp[i]=-2; } cout<<(solve(0,0)==1?"Nina":"Emilija")<<"\n"; }
#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...