Submission #1143219

#TimeUsernameProblemLanguageResultExecution timeMemory
1143219alexnicuWalk (POI13_spa)C++17
24 / 100
192 ms62848 KiB
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

int existing_numbers[(1<<22) + 5];
int finish;
bool ans = 0;
int n;
void dfs( int node ) {
    existing_numbers[node] = 1;

    for( int i = 0; i < n; i++ )
        if( existing_numbers[node ^ (1<<i)] == 0 )
            dfs((node ^ (1<<i)));
}

int main() {
    int k;
    cin >> n >> k;
    string a, b;
    cin >> a >> b;
    int start, finish;

    start = finish = 0;
    for (int i = 0; i < n; ++i) {
        start = 2 * start + (a[i] - '0');
        finish = 2 * finish + (b[i] - '0');
    }
    string s;

    if ( start == finish ) {
        cout << "TAK";
        return 0;
    }
    for ( int i = 1; i <= k; i++ ) {
        cin >> s;

        int x = 0;
        for (int j = 0; j < n; ++j)
            x = 2 * x + (s[j] - '0');

        existing_numbers[x] = 2;
    }

    dfs(start);
    if ( existing_numbers[finish] == 1 )
        cout << "TAK";
    else
        cout << "NIE";
    return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...