Submission #1153826

#TimeUsernameProblemLanguageResultExecution timeMemory
1153826siewjhVlak (COCI20_vlak)C++20
70 / 70
32 ms37444 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 200005; set<pair<int, int>> adj[3][MAXN]; int nodes = 1; int dfs(int x, int p){ int ans = 1 - p; for (auto &[ch, id] : adj[p][x]){ if (adj[1 - p][x].count({ch, id})){ int ca = dfs(id, 1 - p); if (ca == p){ ans = p; break; } } else{ ans = p; break; } } return ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); for (int p = 0; p <= 1; p++){ int nums; cin >> nums; for (int i = 0; i < nums; i++){ string str; cin >> str; int curr = 1; for (char ch : str){ int x = ch - 'a'; auto it = adj[2][curr].lower_bound({x, -1}); if (it != adj[2][curr].end() && it->first == x){ if (!adj[p][curr].count(*it)) adj[p][curr].insert(*it); curr = it->second; } else{ nodes++; adj[p][curr].insert({x, nodes}); adj[2][curr].insert({x, nodes}); curr = nodes; } } } } cout << (dfs(1, 0) ? "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...