#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;
int existing_numbers[(1<<22) + 5];
int finish;
bool ans = 0;
int n;
void dfs( int node ) {
existing_numbers[node] = 1;
for( int i = 0; i < n; i++ )
if( existing_numbers[node ^ (1<<i)] == 0 )
dfs((node ^ (1<<i)));
}
int main() {
int k;
cin >> n >> k;
string a, b;
cin >> a >> b;
int start, finish;
start = finish = 0;
for (int i = 0; i < n; ++i) {
start = 2 * start + (a[i] - '0');
finish = 2 * finish + (b[i] - '0');
}
string s;
if ( start == finish ) {
cout << "TAK";
return 0;
}
for ( int i = 1; i <= k; i++ ) {
cin >> s;
int x = 0;
for (int j = 0; j < n; ++j)
x = 2 * x + (s[j] - '0');
existing_numbers[x] = 2;
}
dfs(start);
if ( existing_numbers[finish] == 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... |