Submission #1089794

#TimeUsernameProblemLanguageResultExecution timeMemory
1089794SalihSahinVlak (COCI20_vlak)C++14
70 / 70
25 ms30656 KiB
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;

const int mod = 1e9 + 7;
const int inf = 1e9;
const int N = 2048;

struct node{
  int nxt[26];
  node(){
    for(int i = 0; i < 26; i++){
      nxt[i] = -1;
    }
  }
};

struct Trie{
  vector<node> trie;

  void start(){
    trie.pb(node());
  }

  void add(int ind, string s){
    for(int i = 0; i < s.size(); i++){
      if(trie[ind].nxt[s[i] - 'a'] == -1){
        trie[ind].nxt[s[i] - 'a'] = trie.size();
        trie.pb(node());
      }

      ind = trie[ind].nxt[s[i] - 'a'];
    }
  }
};

Trie tr1, tr2;

int dp(int ind1, int ind2, int turn){
  if(turn){
    bool win = 0;
    for(int i = 0; i < 26; i++){
      if(tr1.trie[ind1].nxt[i] == -1) continue;
      if(tr1.trie[ind1].nxt[i] != -1 && tr2.trie[ind2].nxt[i] == -1) win = 1;
      else win |= (!dp(tr1.trie[ind1].nxt[i], tr2.trie[ind2].nxt[i], (turn^1)));
    }
    return win;
  }
  else{
    bool win = 0;
    for(int i = 0; i < 26; i++){
      if(tr2.trie[ind2].nxt[i] == -1) continue;
      if(tr2.trie[ind2].nxt[i] != -1 && tr1.trie[ind1].nxt[i] == -1) win = 1;
      else win |= (!dp(tr1.trie[ind1].nxt[i], tr2.trie[ind2].nxt[i], (turn^1)));
    }
    return win;
  }
}

int32_t main(){
  ios_base::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n;
  cin>>n;
  tr1.start();
  for(int i = 0; i < n; i++){
    string s;
    cin>>s;

    tr1.add(0, s);
  }

  int m;
  cin>>m;
  tr2.start();
  for(int i = 0; i < m; i++){
    string s;
    cin>>s;

    tr2.add(0, s);
  }

  int ans = dp(0, 0, 1);
  if(ans) cout<<"Nina"<<endl;
  else cout<<"Emilija"<<endl;
  return 0;
}

Compilation message (stderr)

Main.cpp: In member function 'void Trie::add(long long int, std::string)':
Main.cpp:27:22: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for(int i = 0; i < s.size(); i++){
      |                    ~~^~~~~~~~~~
#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...