#include <cstdio> #include <iostream> #include <vector> #include <queue> using namespace std; int main() { int n, m, k, i, j, l, x, a, b, r, c, z; x = 0; scanf("%d%d%d", &n, &m, &k); vector<vector<bool>> tab(n, vector<bool>(m, true)); vector<vector<bool>> tab2(n, vector<bool>(m, true)); for (i = 0; i < k; ++i) { scanf("%d%d%d", &r, &c, &z); a = (r ^ x) % n; b = (c ^ x) % m; if (tab[a][b]) { tab2 = tab; tab2[a][b] = false; for (j = a; j < n; ++j) { for (l = b; l < m; ++l) { if ((j != a || l != b) && tab[j][l]) { if (j > 0 && l > 0) tab2[j][l] = tab2[j - 1][l] || tab2[j][l - 1]; else if (j > 0) { tab2[j][l] = tab2[j - 1][l]; } else if (l > 0) { tab2[j][l] = tab2[j][l - 1]; } } } } if (!tab2[n - 1][m - 1]) { x = x ^ z; printf("TAK\n"); } else { tab = tab2; printf("NIE\n"); } } else { printf("NIE\n"); } } return 0; }
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 <cstdio> #include <iostream> #include <vector> #include <queue> using namespace std; int main() { int n, m, k, i, j, l, x, a, b, r, c, z; x = 0; scanf("%d%d%d", &n, &m, &k); vector<vector<bool>> tab(n, vector<bool>(m, true)); vector<vector<bool>> tab2(n, vector<bool>(m, true)); for (i = 0; i < k; ++i) { scanf("%d%d%d", &r, &c, &z); a = (r ^ x) % n; b = (c ^ x) % m; if (tab[a][b]) { tab2 = tab; tab2[a][b] = false; for (j = a; j < n; ++j) { for (l = b; l < m; ++l) { if ((j != a || l != b) && tab[j][l]) { if (j > 0 && l > 0) tab2[j][l] = tab2[j - 1][l] || tab2[j][l - 1]; else if (j > 0) { tab2[j][l] = tab2[j - 1][l]; } else if (l > 0) { tab2[j][l] = tab2[j][l - 1]; } } } } if (!tab2[n - 1][m - 1]) { x = x ^ z; printf("TAK\n"); } else { tab = tab2; printf("NIE\n"); } } else { printf("NIE\n"); } } return 0; } |