Submission #1287083

#TimeUsernameProblemLanguageResultExecution timeMemory
1287083muhammadali_2009Vlak (COCI20_vlak)C++20
Compilation error
0 ms0 KiB
// +-- -- --++-- +-In the name of ALLAH-+ --++-- -- --+ // #include <bits/stdc++.h> //#include<ext/pb_ds/assoc_container.hpp> //#include<ext/pb_ds/tree_policy.hpp> #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) #define endl '\n' #define ll long long #define int long long #define all(x) x.begin(), x.end() #define all1(x) x.rbegin(), x.rend() #define seea(x) for(int i = 0; i < x; i++) #define pb push_back #define ff first #define vc vector #define ss second #define ld long double using namespace std; const int mod = 1e9 + 7; const int mxn = 1000002; // kept as in official vector<vector<int>> tr1(mxn, vc<int>(26, 0)), tr2(mxn, vc<int>(26, 0)); int cnt1 = 0, cnt2 = 0; vc<int> stop1(mxn, 0), stop2(mxn, 0); vc<int> lvl(mxn, 0); vc<int> cntA(mxn, 0), cntB(mxn, 0); vc<int> f(mxn, -1); void insert(string a){ int cur = 0; cntA[0]++; for(char c : a){ int id = c - 'a'; if(tr1[cur][id] == 0){ ++cnt1; tr1[cur][id] = cnt1; lvl[cnt1] = lvl[cur] + 1; } cur = tr1[cur][id]; cntA[cur]++; } stop1[cur] = 1; } void insert2(string a){ int cur = 0; cntB[0]++; for(char c : a){ int id = c - 'a'; if(tr1[cur][id] == 0){ ++cnt1; tr1[cur][id] = cnt1; lvl[cnt1] = lvl[cur] + 1; } cur = tr1[cur][id]; cntB[cur]++; } stop2[cur] = 1; } int dp(int node){ if(f[node] != -1) return f[node]; int turn = lvl[node] & 1; // 0 -> Nina to move, 1 -> Emilija to move f[node] = 0; if(turn == 0){ if(!cntA[node]) return f[node] = 0; } else { if(!cntB[node]) return f[node] = 0; } for(int c = 0; c < 26; ++c){ int childPos = tr1[node][c]; if(childPos == 0) continue; if(dp(childPos) == 0){ f[node] = 1; break; } } return f[node]; } void solve(){ int n; cin >> n; for(int i = 0; i < n; i++){ string s; cin >> s; insert(s); } int m; cin >> m; for(int i = 0; i < m; i++){ string s; cin >> s; insert2(s); } for(int i = 0; i <= cnt1; ++i) f[i] = -1; cout << (dp(0) ? "Nina\n" : "Emilija\n"); } signed main(){ fast; int t = 1; while (t --){ solve(); } return 0; }