Submission #881700

#TimeUsernameProblemLanguageResultExecution timeMemory
881700Mizo_CompilerVlak (COCI20_vlak)C++17
70 / 70
15 ms23388 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef double ld; #define pb push_back #define sz(x) int(x.size()) #define all(x) x.begin(),x.end() #define F first #define S second const int N = 2e5+5; int idx = 0, idx2 = 0, n, m; string x; int dp[N]; struct node { node *adj[26]; int id; }; node *newNd() { node *ret = new node; for (int i = 0; i < 26; i++) { ret->adj[i] = NULL; } ret->id = idx++; return ret; } node *newNd2() { node *ret = new node; for (int i = 0; i < 26; i++) { ret->adj[i] = NULL; } ret->id = idx2++; return ret; } node *rt = newNd(); node *rt2 = newNd2(); void insert() { node *cur = rt; for (auto &c : x) { if (cur->adj[c-'a'] == NULL)cur->adj[c-'a'] = newNd(); cur = cur->adj[c-'a']; } } void insert2() { node *cur = rt2; for (auto &c : x) { if (cur->adj[c-'a'] == NULL)cur->adj[c-'a'] = newNd2(); cur = cur->adj[c-'a']; } } int sol(node *cur, node *cur2, int turn) { int &ret = dp[cur->id]; if (~ret)return ret; ret = 0; for (int i = 0; i < 26; i++) { if (!turn) { if (cur->adj[i] != NULL) { if (cur2->adj[i] == NULL)return ret = 1; ret |= !sol(cur->adj[i], cur2->adj[i], (turn ^ 1)); } } else { if (cur2->adj[i] != NULL) { if (cur->adj[i] == NULL)return ret = 1; ret |= !sol(cur->adj[i], cur2->adj[i], (turn ^ 1)); } } } return ret; } int main () { ios::sync_with_stdio(false); cin.tie(nullptr); memset(dp, -1, sizeof dp); cin >> n; for (int i = 0; i < n; i++) { cin >> x; insert(); } cin >> m; for (int i = 0; i < m; i++) { cin >> x; insert2(); } cout << (sol(rt, rt2, 0) ? "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...