Submission #688466

#TimeUsernameProblemLanguageResultExecution timeMemory
688466rieyuwVlak (COCI20_vlak)C++17
70 / 70
100 ms67796 KiB
#include <bits/stdc++.h> using namespace std; const int mxN = 2e5+1; vector<vector<array<int,3>>> nxt(mxN, vector<array<int,3>>(26)); //vector<bool> Nina winning(mxN); bool dfs(int node, int depth) { int par = (depth & 1); //cout << "I am " <<(par ? "Nina" : "Emilija") << " at starting depth " << depth << "\n"; bool res = !par; bool noMove = true; for (int i = 0; i < 26; ++i) { array<int,3>& p = nxt[node][i]; noMove &= (p[0] == 0 || p[2 - par] == 0); if (p[0] != 0 & p[2-par]) { //cout << "I am " << (par ? "Nina" : "Emilija") << " at following depth " << depth << ", char: [" << (char)('a' + i) << " " << p[0] << " " << p[1] << " " << p[2] << "]\n"; bool neigRes = dfs(p[0], depth+1); //cout << "I am " << (par ? "Nina" : "Emilija") << " at returning depth " << depth << ", char: [" << (char)('a' + i) << " " << p[0] << " " << p[1] << " " << p[2] << "] Nina winning: " << neigRes << "\n"; if (par) res |= neigRes; else res &= neigRes; } } if (noMove) { res = !par; //cout << "I am " << (par ? "Nina" : "Emilija") << " at noMove depth " << depth << ", Nina winning: " << res << "\n"; } //cout << "I am " << (par ? "Nina" : "Emilija") << " at terminating depth " << depth << ", Nina winning: " << res << "\n"; return res; } int main() { int n; cin >> n; string s; int MAXID = 0; while(n--) { cin >> s; int node = 0; for (char c : s) { array<int,3>& p = nxt[node][c-'a']; if (p[0] == 0) p[0] = ++MAXID; p[1] = 1; node = p[0]; } } int m; cin >> m; while(m--) { cin >> s; int node = 0; for (char c : s) { array<int,3>& p = nxt[node][c-'a']; if (p[0] == 0) p[0] = ++MAXID; p[2] = 1; node = p[0]; } } cout << (dfs(0, 1) ? "Nina" : "Emilija") << "\n"; }

Compilation message (stderr)

Main.cpp: In function 'bool dfs(int, int)':
Main.cpp:19:18: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   19 |         if (p[0] != 0 & p[2-par])
#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...