#include <iostream>
using namespace std;
const int NMAX = 22;
const int KMAX = (1 << NMAX) - 1;
int viz[(1 << NMAX) + 54];
int n;
void dfs(int node) {
viz[node] = 1;
for (int i = 0; i < n; ++i) {
if (viz[node ^ (1 << i)] == 0)
dfs(node ^ (1 << i));
}
}
int main() {
int k, i;
string a, b;
cin >> n >> k;
cin >> a >> b;
int x, y;
x = y = 0;
for (i = 0; i < n; ++i) {
x = 2 * x + (a[i] - '0');
y = 2 * y + (b[i] - '0');
}
for (i = 0; i < k; ++i) {
cin >> a;
int z = 0;
for (int j = 0; j < n; ++j)
z = 2 * z + (a[j] - '0');
viz[z] = 2;
}
if (x == y) {
cout << "TAK";
return 0;
}
dfs(x);
if (viz[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... |