Submission #1153824

#TimeUsernameProblemLanguageResultExecution timeMemory
1153824YSH2020Vlak (COCI20_vlak)C++20
70 / 70
9 ms1208 KiB
#include <bits/stdc++.h>
using namespace std;

vector<string> a;
vector<string> b;

int solve(int a_s, int a_e, int b_s, int b_e, int c, int m) {
  //currently at the cth character, and its m's turn to play.
  //categorise by first letter.
  vector<int> ranges[26];
  for (int i = a_s; i <= a_e; i++) {
    if (a[i].size() > c) ranges[(int)(a[i][c]-'a')].push_back(i);
  }
  vector<int> ranges2[26];
  for (int i = b_s; i <= b_e; i++) {
    if (b[i].size() > c) ranges2[(int)(b[i][c]-'a')].push_back(i);
  }
  if (m == 0) {
    //player a to play
    for (int i = 0; i < 26; i++) {
      if (ranges[i].size() > 0 and ranges2[i].size() == 0) {
        return 0;
      }
      if (ranges[i].size() == 0) continue;
      if (solve(ranges[i][0], ranges[i][ranges[i].size()-1], ranges2[i][0], ranges2[i][ranges2[i].size()-1], c+1, 1-m) == 0) {
        return 0;
      }
    }
    return 1;
  }
  else {
    for (int i = 0; i < 26; i++) {
      if (ranges2[i].size() > 0 and ranges[i].size() == 0) return 1;
      if (ranges2[i].size() == 0) continue;
      if (solve(ranges[i][0], ranges[i][ranges[i].size()-1], ranges2[i][0], ranges2[i][ranges2[i].size()-1], c+1, 1-m) == 1) return 1;
    }
    return 0;
  }
}



int main() {
  int n; cin >> n;
  for (int i = 0; i < n; i++) {
    string s; cin >> s;
    a.push_back(s);
  }
  int m ;cin >> m;
  for (int i = 0; i < m; i++) {
    string s; cin >> s;
    b.push_back(s);
  }
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  if (solve(0, n-1, 0, m-1, 0, 0) == 0) cout << "Nina";
  else cout << "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...