Submission #1087759

#TimeUsernameProblemLanguageResultExecution timeMemory
1087759shidou26Vlak (COCI20_vlak)C++14
0 / 70
74 ms69204 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define all(v) v.begin(), v.end() typedef long long ll; typedef pair<int, int> ii; typedef pair<ll, int> li; const int N = 2e5 + 3; struct node { int num_child; node* children[26]; node () { num_child = 0; for(int i = 0; i < 26; i++) children[i] = nullptr; } }; int n, m; string a[N], b[N]; node *one = new node(); node *two = new node(); void prepare() { } void input() { cin >> n; for(int i = 1; i <= n; i++) { cin >> a[i]; } cin >> m; for(int i = 1; i <= m; i++) { cin >> b[i]; } } void insert(int type, string s) { node *current = (type == 0 ? one : two); for(int i = 0; i < (int)s.size(); i++) { int ch = (s[i] - 'a'); if(current -> children[ch] == nullptr) { current -> children[ch] = new node(); current -> num_child++; } current = current -> children[ch]; } } void process() { for(int i = 1; i <= n; i++) insert(0, a[i]); for(int i = 1; i <= m; i++) insert(1, b[i]); node *current_one = one; node *current_two = two; for(int turn = 1; true; turn++) { if(turn & 1) { int diff = 0, ch = 0; for(int i = 0; i < 26; i++) { if(current_one -> children[i] != nullptr && current_two -> children[i] == nullptr) { cout << "Nina" << endl; return; } if(current_one -> children[i] == nullptr) continue; int gap = current_one -> children[i] -> num_child - current_two -> children[i] -> num_child; if(diff < gap) { diff = gap; ch = i; } } current_one = current_one -> children[ch]; }else { int diff = 0, ch = 0; for(int i = 0; i < 26; i++) { if(current_two -> children[i] != nullptr && current_one -> children[i] == nullptr) { cout << "Emilija" << endl; return; } if(current_two -> children[i] == nullptr) continue; int gap = current_two -> children[i] -> num_child - current_one -> children[i] -> num_child; if(diff < gap) { diff = gap; ch = i; } } current_two = current_two -> children[ch]; } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); #define task "kurumi" if(fopen(task".INP", "r")) { freopen(task".INP", "r", stdin); freopen(task".OUT", "w", stdout); } prepare(); int testcase = 1; // cin >> testcase; for(int i = 1; i <= testcase; i++) { input(); process(); } return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:107:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  107 |         freopen(task".INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:108:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  108 |         freopen(task".OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...