Submission #1143337

#TimeUsernameProblemLanguageResultExecution timeMemory
1143337LucaIlieWalk (POI13_spa)C++20
12 / 100
243 ms177508 KiB
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 22;
int n, Y;
bitset<(1 << MAX_N)> vis;

void dfs( int x ) {
    vis[x] = true;
    if ( vis[Y] )
        return;
    for ( int b = 0; b < n; b++ ) {
        int y = (x ^ (1 << b));
        if ( !vis[y] )
            dfs( y );
    }
}

int convertString( string a ) {
    int x = 0;
    for ( int i = 0; i < a.size(); i++ ) {
        int b = a[i] - '0';
        x += (b << i);
    }
    return x;
}

int main() {

    int k, x, y;
    string a, b;

    cin >> n >> k >> a >> b;

    x = convertString( a );
    y = convertString( b );
    Y = y;

    if ( x == y ) {
        cout << "TAK\n";
        return 0;
    }
    for ( int i = 0; i < k; i++ ) {
        cin >> a;
        int x = 0;
        for ( int i = 0; i < a.size(); i++ ) {
            int b = a[i] - '0';
            x += (b << i);
        }
        vis[x] = true;
    }

    if ( vis[x] || vis[y] ) {
        cout << "NIE\n";
        return 0;
    }

    dfs( x );

    if ( vis[y] )
        cout << "TAK\n";
    else
        cout << "NIE\n";

    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...