#include <iostream>
using namespace std;
const int NMAX = 22;
const int KMAX = (1 << NMAX) - 1;
int viz[(1 << NMAX) + 1];
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, j, x, y;
string s, s1, s2;
cin >> n >> k;
cin >> s1 >> s2;
x = y = 0;
for (i = 0; i < n; ++i) {
x = 2 * x + (s1[i] - '0');
y = 2 * y + (s2[i] - '0');
}
for (i = 0; i < k; ++i) {
cin >> s;
int z = 0;
for (j = 0; j < n; j++)
z = z * 2 + (s[j] - '0');
viz[z] = 1;
}
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... |