Submission #1143176

#TimeUsernameProblemLanguageResultExecution timeMemory
1143176alexnicuWalk (POI13_spa)C++20
12 / 100
469 ms239960 KiB
#include <iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;

bool existing_numbers[(1<<24) + 5];

int string_to_number( string s ) {
    int ans = 0, pow = 0;
    for ( int i = s.size() - 1; i >= 0; i-- ) {
        if ( s[i] == '1' ) {
            ans = ans + ( 1 << pow );
        }
        pow++;
    }
    return ans;
}
int finish;
bool ans = false;
int n;
void dfs( int node ) {
    if (existing_numbers[finish] == true ) {
        ans = true;
        return;
    }
    int cx = node;
    for ( int i = n - 1; i >= 0; i-- ) {
       if ( node >= (1 << i) ){
        if(existing_numbers[cx - (1 << i)] == false){
            existing_numbers[cx - (1 << i)] = true;
            dfs(cx - (1 << i));
        }
        node -= (1 << i);
       }
       else
        if(existing_numbers[cx + (1 << i)] == false){
            existing_numbers[cx + (1 << i)] = true;
            dfs(cx + (1 << i));
        }
    }
    return;
}

int main() {
    int k;
    cin >> n >> k;
    string a, b;
    cin >> a >> b;
    int start;
    start = string_to_number(a);
    finish = string_to_number(b);
    string s;
    for ( int i = 1; i <= k; i++ ) {
        cin >> s;
        existing_numbers[string_to_number(s)] = true;
    }
    if ( start == finish ) {
        cout << "TAK";
        return 0;
    }
    existing_numbers[start] = true;
    dfs(start);
    if ( ans == true )
        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...