제출 #1217758

#제출 시각아이디문제언어결과실행 시간메모리
1217758leandroioileleVlak (COCI20_vlak)C++20
70 / 70
16 ms12120 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 pb push_back #define INF 99999999999 #define NMAX 200005 struct node{ bool tem[2]; map<char,int>next; node(){ tem[0]=tem[1]=0; next.clear(); } }; vector<node>v; int inicio; int dp[NMAX]; int new_node(){ v.pb(node()); return v.size()-1; } bool solve(int x, int id){ if(v[x].tem[1]==0 && id==0)return true; if(v[x].tem[0]==0 && id==1)return false; if(dp[x]!=-1)return dp[x]; if(id==0){ dp[x]=false; for(auto it:v[x].next){ if(solve(it.second,1-id)==true){ dp[x]=true; } } } else{ dp[x]=true; for(auto it:v[x].next){ if(solve(it.second,1-id)==false){ dp[x]=false; } } } return dp[x]; } int32_t main(){ faster int n; cin>>n; string s; int x; inicio=new_node(); v[inicio].tem[0]=1; v[inicio].tem[1]=1; dp[0]=-1; for(int i=0; i<n; i++){ cin>>s; x=inicio; for(auto it:s){ if(v[x].next.count(it)==0){ v[x].next[it]=new_node(); } x=v[x].next[it]; dp[x]=-1; v[x].tem[0]=1; } } cin>>n; for(int i=0; i<n; i++){ cin>>s; x=inicio; for(auto it:s){ if(v[x].next.count(it)==0){ v[x].next[it]=new_node(); } x=v[x].next[it]; dp[x]=-1; v[x].tem[1]=1; } } 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...