#include <iostream>
using namespace std;
const int nmax = 1e7;
bool viz[nmax];
int n;
int tr( string s ) {
int p2 = 1, rez = 0;
for( int i = n - 1; i >= 0; i-- ) {
rez = rez + p2 * (s[i] - '0');
p2 *= 2;
}
return rez;
}
void bfs( int vf ) {
viz[vf] = true;
int p2 = 1;
for( int i = 0; i < n; i++ ) {
if( (vf / p2) % 2 == 0 ) {
if( viz[vf + p2] == false )
bfs( vf + p2 );
} else {
if( viz[vf - p2] == false )
bfs( vf - p2 );
}
p2 *= 2;
}
}
signed main()
{
int k, a;
cin >> n >> k;
int x, y;
string s;
cin >> s;
x = tr(s);
cin >> s;
y = tr(s);
if( x == y ) {
cout << "TAK";
return 0;
}
for( int i = 0; i < k; i++ ) {
cin >> s;
a = tr(s);
viz[a] = true;
//cout << v[i] << " ";
}
//cout << "\n";
bfs( x );
if( viz[y] == true )
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... |