이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using ll = long long;
template<class T> bool cmin(T &i,T j) { return i > j ? i = j, true : false; }
template<class T> bool cmax(T &i,T j) { return i < j ? i = j, true : false; }
constexpr int nax = 4e5;
int trie[nax][26];
bool who[nax][2];
bool dfs(int x,int turn) { // se vince il giocare 'turn' giocando da x
for (int i=0;i<26;i++) {
if (!trie[x][i]) { continue; }
int y = trie[x][i];
if (who[y][turn] && !dfs(y,turn^1)) {
return true;
}
}
return false;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int cnt = 1;
while(n--) {
string s;
cin >> s;
int u = 0;
for (auto &c: s) {
if (!trie[u][c-'a']) { trie[u][c-'a']=cnt++; }
u = trie[u][c-'a'];
who[u][0]=true;
}
}
int m;
cin >> m;
while(m--) {
string s;
cin >> s;
int u = 0;
for (auto &c: s) {
if (!trie[u][c-'a']) { trie[u][c-'a']=cnt++; }
u = trie[u][c-'a'];
who[u][1]=true;
}
}
cout << (dfs(0,0) ? "Nina" : "Emilija") << "\n";
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |