제출 #1279979

#제출 시각아이디문제언어결과실행 시간메모리
1279979limitsVlak (COCI20_vlak)C++20
70 / 70
9 ms10044 KiB
#pragma GCC optimize("Ofast")
#pragma GCC optimize("O3,unroll-loops")

#include <bits/stdc++.h>

using namespace std;

#define f0r(i, n) for (auto i = 0; i < (n); ++i)
#define fnr(i, n, k) for (auto i = (n); i < (k); ++i)
#define all(v) (v).begin(), (v).end()
#define pb push_back
#define F first
#define S second
#define ctn(x) cout << x << '\n'
#define forl(a, l) for (auto a : l)
#define ctl(l) for (auto &a : (l)) cout << a << ' '; cout << endl;
#define lb(v, x) (lower_bound(all(v), x) - begin(v))
#define ub(v, x) (upper_bound(all(v), x) - begin(v))
#define pq priority_queue

template <class T>
using V = vector<T>;
using ll = long long;
using vi = V<int>;
using vl = V<ll>;
using pi = pair<int, int>;
using ti = tuple<int, int, int>;
using Adj = V<vi>;
using vvi = V<vi>;

const int NMAX = 2e5 + 5;
int nxt[NMAX][26], out[NMAX], nd = 0;

void insert(string &s, int p) {
	int v = 0;
	forl(ch, s) {
		char c = ch - 'a';
		if (!nxt[v][c]) nxt[v][c] = ++nd;
		v = nxt[v][c];
	}
	out[v] |= p;
}

bool dfs(int v, int p) {
	if (out[v]) return out[v] & p;
	f0r(i, 26) if (nxt[v][i] && dfs(nxt[v][i], 3 ^ p)) return false;
	return true;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m;
	V<string> p1, p2;
	string s;
	cin >> n;
	f0r(i, n) {
		cin >> s;
		insert(s, 1);
	}
	cin >> m;
	f0r(i, m) {
		cin >> s;
		insert(s, 2);
	}
	ctn((dfs(0, 2) ? "Emilija" : "Nina"));
}
#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...