#include<cstdio> #include<bitset> #include<vector> using namespace std; const int MAX_N = 50002; vector<bitset<MAX_N>> bitsets; int main() { int n, m, q, op_type, op_arg_1, op_arg_2, q_idx, q_el; scanf("%d%d%d", &n, &m, &q); bitsets.resize(n + m + 1); for (int i = 1; i <= n ; i++) { for (int j = i; j <= n; j += i) { bitsets[i][j] = true; } } for (int i = 1; i <= m; i++) { scanf("%d", &op_type); if (op_type == 1) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] | bitsets[op_arg_2]; } if (op_type == 2) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] & bitsets[op_arg_2]; } if (op_type == 3) { scanf("%d", &op_arg_1); bitsets[n + i] = bitsets[op_arg_1]; bitsets[n + i].flip(); } } for (int i = 0; i < q; i++) { scanf("%d%d", &q_idx, &q_el); if (bitsets[q_idx][q_el]) { printf("TAK\n"); } else { printf("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 | #include<cstdio> #include<bitset> #include<vector> using namespace std; const int MAX_N = 50002; vector<bitset<MAX_N>> bitsets; int main() { int n, m, q, op_type, op_arg_1, op_arg_2, q_idx, q_el; scanf("%d%d%d", &n, &m, &q); bitsets.resize(n + m + 1); for (int i = 1; i <= n ; i++) { for (int j = i; j <= n; j += i) { bitsets[i][j] = true; } } for (int i = 1; i <= m; i++) { scanf("%d", &op_type); if (op_type == 1) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] | bitsets[op_arg_2]; } if (op_type == 2) { scanf("%d%d", &op_arg_1, &op_arg_2); bitsets[n + i] = bitsets[op_arg_1] & bitsets[op_arg_2]; } if (op_type == 3) { scanf("%d", &op_arg_1); bitsets[n + i] = bitsets[op_arg_1]; bitsets[n + i].flip(); } } for (int i = 0; i < q; i++) { scanf("%d%d", &q_idx, &q_el); if (bitsets[q_idx][q_el]) { printf("TAK\n"); } else { printf("NIE\n"); } } } |