Submission #1143335

#TimeUsernameProblemLanguageResultExecution timeMemory
1143335Luca7Walk (POI13_spa)C++20
24 / 100
5095 ms327680 KiB
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;

#define ll int

// ifstream cin("data.in");
// ofstream cout("data.out");

vector<ll> vpow;

vector<int> visited;

ll snr(int n,string s){
    ll x=0;
    for(ll i=0;i<n;i++){
        x+=(s[i]-'0')*((ll)1<<(n-i-1));
    }
    return x;
}

queue<int> q;


int main(){
    ll n,k,i,j,x=0,y=0;
    string s;
    
    cin>>n>>k;
    cin>>s;
    x=snr(n,s);
    cin>>s;
    y=snr(n,s);

    visited.resize((1<<n)+20,0);
    for(i=0;i<k;i++){
        cin>>s;
        visited[snr(n,s)]=-1;
    }


    q.push(x);
    visited[x]=1;
    while(!q.empty()){
        if(visited[y]==1){
            cout<<"TAK";
            return 0;
        }
        ll p=q.front();
        q.pop();
        for(int i=0;i<n;i++){
            ll p1;
            if(p&(1<<(i))){
                p1=p-(1<<(i));
            }
            else{
                p1=p+(1<<(i));
            }
            if(visited[p1]==0){
                visited[p1]=1;
                if(visited[y]==1){
                    cout<<"TAK";
                    return 0;
                }
                q.push(p1);
            }
        }
    }

    if(visited[y]==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...