#include <bits/stdc++.h>
using namespace std;
#define ull int
int main()
{
int n, k;
string sx, sy;
cin >> n >> k >> sx >> sy;
auto str_to_nr = [&](const string &s) -> ull
{
ull nr = 0;
for(char c : s)
nr = (nr << 1) | (c - '0');
return nr;
};
ull x = str_to_nr(sx), y = str_to_nr(sy);
unordered_set<ull> blk;
string s;
int i;
for(i = 0; i < k; i++)
{
cin >> s;
blk.insert(str_to_nr(s));
}
if(x == y){cout << "TAK"; return 0;}
if(blk.find(x) != blk.end() || blk.find(y) != blk.end()){cout << "NIE"; return 0;}
queue<ull> q;
unordered_set<ull> viz;
q.push(x);
viz.insert(x);
while(!q.empty())
{
ull curr = q.front();
q.pop();
for(i = 0; i < n; i++)
{
ull vec = curr ^ (1ULL << (n - 1 - i));
if(vec == y){cout << "TAK"; return 0;}
if(blk.find(vec) == blk.end() && viz.find(vec) == viz.end())
{
viz.insert(vec);
q.push(vec);
}
}
}
cout << "NIE";
}
# | 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... |