Submission #1254293

#TimeUsernameProblemLanguageResultExecution timeMemory
1254293luis_aqmVlak (COCI20_vlak)C++20
70 / 70
19 ms14796 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define tt tuple<int,int,int> #define NMAX 100005 #define MOD 1000000007 #define faster ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); struct node { map<int, int> next; int id, sz, marc[2]; node(){ id = -1; next.clear(); sz = marc[0] = marc[1] = 0; } }; vector<node> tri = {node()}; string resp; int new_node() { tri.push_back(node()); return tri.size()-1; } void insere(string &s, int i, bool player) { int k = 0; for(int j = 0; j < s.size(); j++) { if(!tri[k].next.count(s[j])) { tri[k].next[s[j]] = new_node(); } k = tri[k].next[s[j]]; tri[k].marc[player] = 1; tri[k].sz = j+1; } tri[k].id = i; } int32_t main() { faster int n; cin>>n; for(int i = 1; i <= n; i++) { string s; cin>>s; insere(s, i, 0); } int m; cin>>m; for(int i = 1; i <= m; i++) { string s; cin>>s; insere(s, i, 1); } vector<int> dp(tri.size(), 0); for(int i = tri.size()-1; i >= 0; i--) { if(tri[i].next.empty()) continue; bool player = tri[i].sz & 1; for(auto [c, it] : tri[i].next) { if(!tri[it].marc[player]) continue; if(!dp[it]) dp[i] = 1; } } if(dp[0]) cout<<"Nina\n"; else cout<<"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...