제출 #1153926

#제출 시각아이디문제언어결과실행 시간메모리
1153926itslqVlak (COCI20_vlak)C++20
70 / 70
20 ms28604 KiB
#include <bits/stdc++.h> using namespace std; const int MAX = 2e5; vector<int> letter(MAX), dep(MAX); vector<bool> ni(MAX, false), em(MAX, false); vector<vector<int>> children(MAX, vector<int>(26, -1)); bool emilija(int n); bool nina(int n) { for (int i = 0; i < 26; i++) { if (children[n][i] != -1 && ni[children[n][i]]) { if (!emilija(children[n][i])) { return true; } } } return false; } bool emilija(int n) { for (int i = 0; i < 26; i++) { if (children[n][i] != -1 && em[children[n][i]]) { if (!nina(children[n][i])) { return true; } } } return false; } int main() { int N, M, cur, cnt = 1, l; string word; cin >> N; for (int i = 0; i < N; i++) { cin >> word; cur = 0; for (int j = 0; j < word.size(); j++) { l = word[j] - 'a'; if (children[cur][l] == -1) { children[cur][l] = cnt; dep[cnt] = dep[cur] + 1; letter[cur = cnt++] = l; } else { cur = children[cur][l]; } ni[cur] = true; } } cin >> M; for (int i = 0; i < M; i++) { cin >> word; cur = 0; for (int j = 0; j < word.size(); j++) { l = word[j] - 'a'; if (children[cur][l] == -1) { children[cur][l] = cnt; dep[cnt] = dep[cur] + 1; letter[cur = cnt++] = l; } else { cur = children[cur][l]; } em[cur] = true; } } cout << (nina(0) ? "Nina" : "Emilija"); }
#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...