제출 #1161739

#제출 시각아이디문제언어결과실행 시간메모리
1161739ezzatw122Vlak (COCI20_vlak)C++20
20 / 70
13 ms23880 KiB
#include <bits/stdc++.h> // you just try again using namespace std; #define ll long long void read() { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); } const int N = 2e5 + 5, M = 2; struct Node { int chid[26], lvl, cnt[2]; Node() { for (int i = 0; i < 26; ++i)chid[i] = -1; lvl = cnt[0] = cnt[1] = 0; } }; Node Trie[N]; int len; void add(string &s, int typ) { int node = 0, lvl = 0; Trie[node].cnt[typ]++; for (auto c: s) { if (Trie[node].chid[c - 'a'] == -1) { Trie[node].chid[c - 'a'] = ++len; } node = Trie[node].chid[c - 'a']; Trie[node].cnt[typ]++; Trie[node].lvl = lvl++; } } int dp[N], n, m; int solve(int node) { int &ret = dp[node]; if (~ret)return ret; ret = 0; int turn = Trie[node].lvl & 1; if (!Trie[node].cnt[turn])return ret = 0; for (int i = 0; i < 26; ++i) { if (~Trie[node].chid[i])ret |= !solve(Trie[node].chid[i]); } return ret; } void code() { cin >> n; memset(dp, -1, sizeof dp); for (int i = 0; i < n; ++i) { string s; cin >> s; add(s, 0); } cin >> m; for (int i = 0; i < m; ++i) { string s; cin >> s; add(s, 1); } cout << (solve(0) ? "Nina" : "Emilija"); } int main() { read(); int t = 1; // cin >> t; while (t--)code(); }
#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...