Submission #1143302

#TimeUsernameProblemLanguageResultExecution timeMemory
1143302LucaIlieWalk (POI13_spa)C++20
0 / 100
1515 ms327680 KiB
#include <bits/stdc++.h>

using namespace std;

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

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 );

    for ( int i = 0; i < k; i++ ) {
        cin >> a;
        vis[convertString( a )] = true;
    }

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

    queue<int> q;
    q.push( x );
    while ( !q.empty() && q.front() != y ) {
        int x = q.front();
        q.pop();
        vis[x] = true;

        for ( int b = 0; b < n; b++ ) {
            int y = (x ^ (1 << b));
            if ( !vis[y] )
                q.push( y );
        }
    }

    if ( !q.empty() && q.front() == 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...