#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |