#include <iostream>
struct Set {
int type;
int arg1;
int arg2;
};
bool is_in(int v, int x, int n, Set *sets) {
if (v > n || v < 1) {
return false;
}
if (x <= n) {
return v % x == 0;
}
if (sets[x - n - 1].type == 3) {
return !is_in(v, sets[x - n - 1].arg1, n, sets);
}
if (sets[x - n - 1].type == 2) {
return is_in(v, sets[x - n - 1].arg1, n, sets) && is_in(v, sets[x - n - 1].arg2, n, sets);
}
return is_in(v, sets[x - n - 1].arg1, n, sets) || is_in(v, sets[x - n - 1].arg2, n, sets);
}
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int n, m, q;
std::cin >> n >> m >> q;
Set sets[m];
for (int i = 0; i < m; i++) {
std::cin >> sets[i].type >> sets[i].arg1;
if (sets[i].type < 3) {
std::cin >> sets[i].arg2;
}
}
int v, x;
for (int i = 0; i < q; i++) {
std::cin >> x >> v;
if (is_in(v, x, n, sets)) {
std::cout << "TAK\n";
} else {
std::cout << "NIE\n";
}
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <iostream> struct Set { int type; int arg1; int arg2; }; bool is_in(int v, int x, int n, Set *sets) { if (v > n || v < 1) { return false; } if (x <= n) { return v % x == 0; } if (sets[x - n - 1].type == 3) { return !is_in(v, sets[x - n - 1].arg1, n, sets); } if (sets[x - n - 1].type == 2) { return is_in(v, sets[x - n - 1].arg1, n, sets) && is_in(v, sets[x - n - 1].arg2, n, sets); } return is_in(v, sets[x - n - 1].arg1, n, sets) || is_in(v, sets[x - n - 1].arg2, n, sets); } int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int n, m, q; std::cin >> n >> m >> q; Set sets[m]; for (int i = 0; i < m; i++) { std::cin >> sets[i].type >> sets[i].arg1; if (sets[i].type < 3) { std::cin >> sets[i].arg2; } } int v, x; for (int i = 0; i < q; i++) { std::cin >> x >> v; if (is_in(v, x, n, sets)) { std::cout << "TAK\n"; } else { std::cout << "NIE\n"; } } } |
English