#include<cstdio>
int n, m, k;
int ** M;
int x;
void input() {
scanf("%d %d %d", &n, &m, &k);
x = 0;
M = new int*[n];
for (int i = 0; i < n; i++) {
M[i] = new int[m];
}
}
bool possible(int i, int j, int q) {
M[0][0] = q;
for (int a = 0; a < n; a++) {
for (int b = 0; b < m; b++) {
if (M[a][b] != -1) {
if (a > 0 && M[a - 1][b] == q) {
M[a][b] = q;
}
if (b > 0 && M[a][b - 1] == q) {
M[a][b] = q;
}
}
}
}
return M[n-1][m-1] == q;
}
void solve(int r, int c, int z, int q) {
int i = (r ^ x) % n;
int j = (c ^ x) % m;
M[i][j] = -1;
if (possible(i, j, q)) {
printf("NIE\n");
} else {
M[i][j] = 0;
x ^= z;
printf("TAK\n");
}
}
void solve() {
int r, c, z;
for (int i = 0; i < k; i++) {
scanf("%d %d %d", &r, &c, &z);
solve(r, c, z, i+1);
}
}
int main() {
input();
solve();
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 47 48 49 50 51 52 53 54 55 56 57 58 | #include<cstdio> int n, m, k; int ** M; int x; void input() { scanf("%d %d %d", &n, &m, &k); x = 0; M = new int*[n]; for (int i = 0; i < n; i++) { M[i] = new int[m]; } } bool possible(int i, int j, int q) { M[0][0] = q; for (int a = 0; a < n; a++) { for (int b = 0; b < m; b++) { if (M[a][b] != -1) { if (a > 0 && M[a - 1][b] == q) { M[a][b] = q; } if (b > 0 && M[a][b - 1] == q) { M[a][b] = q; } } } } return M[n-1][m-1] == q; } void solve(int r, int c, int z, int q) { int i = (r ^ x) % n; int j = (c ^ x) % m; M[i][j] = -1; if (possible(i, j, q)) { printf("NIE\n"); } else { M[i][j] = 0; x ^= z; printf("TAK\n"); } } void solve() { int r, c, z; for (int i = 0; i < k; i++) { scanf("%d %d %d", &r, &c, &z); solve(r, c, z, i+1); } } int main() { input(); solve(); return 0; } |
English