Submission #1138249

#TimeUsernameProblemLanguageResultExecution timeMemory
1138249spacecowboyVlak (COCI20_vlak)C++20
0 / 70
23 ms13384 KiB
#include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() #define pb push_back #define fi st #define se nd #define INF INT_MAX/2 typedef long long ll; typedef pair<int,int> pii; typedef vector<int> vi; const int N = 2e5; //Number of nodes const int ALPHA = 26; // Number of characters int trie[N][ALPHA]; map<int,int> type; int last_n = 0; void insert(string &s, int from){ int curr_node = 0; for(char it: s){ if(trie[curr_node][it-'a'] == 0){ trie[curr_node][it-'a'] = ++last_n; if(type.count(last_n)) type[last_n] = 2; else type[last_n] = from; } curr_node = trie[curr_node][it-'a']; } return; } bool wins(int node, int turn){ int cnt = 0, winner = 0; for(int i=0; i <26; i++){ if(trie[node][i] && type[trie[node][i]] != (!(turn%2))){ cnt++; if(wins(trie[node][i], turn+1)) winner++; } } //cout << "from node " << node << " turn " << turn << " cnt: " << cnt<< " winner: " << winner << endl; if(!cnt || cnt == winner) return false; else return true; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m; cin >> n ; while(n--){ string word; cin >> word; insert(word,0); } cin >> m; while(m--){ string word; cin >> word; insert(word,1); } if(wins(0,0)) cout << "Nina\n"; else cout << "Emilija\n"; return 0; }
#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...