Submission #588535

#TimeUsernameProblemLanguageResultExecution timeMemory
588535aris12345678Vlak (COCI20_vlak)C++14
70 / 70
21 ms20424 KiB
#include <bits/stdc++.h>
using namespace std;

struct node {
    bool word, nina, emilija;
    // int depth;
    node *child[26];
    node() {
        word = nina = emilija = false;
        // depth = 0;
        for(int i = 0; i < 26; i++)
            child[i] = NULL;
    }
};

typedef node *pnode;
pnode root = new node();

void add(string s, bool nin, bool em) {
    int n = int(s.size());
    pnode cur = root;
    for(int i = 0; i < n; i++) {
        if(cur->child[s[i]-'a'] == NULL)
            cur->child[s[i]-'a'] = new node();
        // cur->child[s[i]-'a']->depth = 1+cur->depth;
        cur = cur->child[s[i]-'a'];
        if(!cur->nina)
            cur->nina = nin;
        if(!cur->emilija)
            cur->emilija = em;
    }
    cur->word = true;
}

bool dfs(pnode cur, bool play = true) {
    if(play) {
        for(int i = 0; i < 26; i++) {
            if(cur->child[i] == NULL) continue;
            if(cur->child[i]->nina) {
                if(!cur->child[i]->emilija)
                    return true;
                if(!dfs(cur->child[i], false))
                    return true;
            }
        }
    } else {
        for(int i = 0; i < 26; i++) {
            if(cur->child[i] == NULL) continue;
            if(cur->child[i]->emilija) {
                if(!cur->child[i]->nina)
                    return true;
                if(!dfs(cur->child[i], true))
                    return true;
            }
        }
    }
    return false;
}

int main() {
    int n, m;
    scanf("%d\n", &n);
    for(int i = 0; i < n; i++) {
        string s;
        cin >> s;
        add(s, true, false);
    }
    scanf("%d\n", &m);
    for(int i = 0; i < m; i++) {
        string s;
        cin >> s;
        add(s, false, true);
    }
    if(dfs(root))
        printf("Nina\n");
    else
        printf("Emilija\n");
    return 0;
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:62:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |     scanf("%d\n", &n);
      |     ~~~~~^~~~~~~~~~~~
Main.cpp:68:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   68 |     scanf("%d\n", &m);
      |     ~~~~~^~~~~~~~~~~~
#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...