Submission #1275450

#TimeUsernameProblemLanguageResultExecution timeMemory
1275450papauloVlak (COCI20_vlak)C++20
70 / 70
20 ms23048 KiB
#include <bits/stdc++.h>
using namespace std;

#define MAXI 200200

int trie[MAXI][26];
int par[MAXI];
int has[MAXI][2];
int dp[MAXI];
int id=0;

void insert(string s, int i) {
    int n=0;
    for(char c : s) {
        int &t=trie[n][c-'a'];
        if(!t) {
            t=++id;
            par[t]=par[n]^1;
        }
        n=t;
        has[n][i]=1;
    }
}

int main() {
    memset(trie, 0, sizeof(trie));
    memset(dp, 0, sizeof(dp));
    memset(par, 0, sizeof(par));
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    while(n--) {
        string s;
        cin >> s;
        insert(s, 0);
    }
    int m;
    cin >> m;
    while(m--) {
        string s;
        cin >> s;
        insert(s, 1);
    }
    for(int i=id;i>=0;i--) {
        int j=par[i];
        for(int k=0;k<26;k++) {
            int t=trie[i][k];
            if(t&&has[t][j]&&!dp[t]) {
                dp[i]=1;
                break;
            }
        }
    }
    if(dp[0]) cout << "Nina\n";
    else cout << "Emilija\n";
}
#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...