제출 #445951

#제출 시각아이디문제언어결과실행 시간메모리
445951JasiekstrzVlak (COCI20_vlak)C++17
70 / 70
27 ms14380 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const int N=2e5;
int k=1;
map<char,int> e[N+10];
bool ok[N+10][2];
void add(int x,string::iterator bg,string::iterator en,bool c)
{
	ok[x][c]=true;
	if(bg==en)
		return;
	if(e[x].find(*bg)==e[x].end())
		e[x][*bg]=++k;
	add(e[x][*bg],bg+1,en,c);
	return;
}
bool dfs(int x,bool t)
{
	if(!ok[x][0])
		return 1;
	if(!ok[x][1])
		return 0;
	if(e[x].empty())
		return !t;
	bool vis[2]={0,0};
	for(auto [c,v]:e[x])
		vis[dfs(v,!t)]=true;
	if(!vis[0])
		return 1;
	if(!vis[1])
		return 0;
	return t;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int n,m;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		string s;
		cin>>s;
		add(1,s.begin(),s.end(),0);
	}
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		string s;
		cin>>s;
		add(1,s.begin(),s.end(),1);
	}
	cout<<(!dfs(1,0) ? "Nina":"Emilija")<<"\n";
	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...