#include <bits/stdc++.h> using namespace std; int n,m,x,k,r,c,z,a,b; bool w,ww; vector < vector<bool> > t; vector <bool> v; void dfs(int a, int b) { if (a==n || b==m) return; if (t[a][b]==0) return; if (a==n-1 && b==m-1) ww=1; if (ww==1) return; dfs(a,b+1); if (ww==1) return; dfs(a+1,b); } void dfs2(int a, int b) { if (a==n || b==m || t[a][b]==0) return; if (a>0 && b>0) { if (t[a-1][b]==1 || t[a][b-1]==1) return; else if (t[a][b]==1) t[a][b]=0; } if (a==0) { if (t[a][b-1]==0) t[a][b]=0; else return; } if (b==0) { if (t[a-1][b]==0) t[a][b]=0; else return; } dfs2(a+1,b); dfs2(a,b+1); } int main() { scanf("%d%d",&n,&m); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { v.push_back(1); } t.push_back(v); } scanf("%d",&k); for (int i=0; i<k; i++) { scanf("%d%d%d",&r,&c,&z); a=r^x; b=c^x; a%=n; b%=m; t[a][b]=0; ww=0; dfs(0,0); if (ww==0) { t[a][b]=1; x^=z; printf("TAK\n"); } else { dfs2(a,b+1); dfs2(a+1,b); 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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #include <bits/stdc++.h> using namespace std; int n,m,x,k,r,c,z,a,b; bool w,ww; vector < vector<bool> > t; vector <bool> v; void dfs(int a, int b) { if (a==n || b==m) return; if (t[a][b]==0) return; if (a==n-1 && b==m-1) ww=1; if (ww==1) return; dfs(a,b+1); if (ww==1) return; dfs(a+1,b); } void dfs2(int a, int b) { if (a==n || b==m || t[a][b]==0) return; if (a>0 && b>0) { if (t[a-1][b]==1 || t[a][b-1]==1) return; else if (t[a][b]==1) t[a][b]=0; } if (a==0) { if (t[a][b-1]==0) t[a][b]=0; else return; } if (b==0) { if (t[a-1][b]==0) t[a][b]=0; else return; } dfs2(a+1,b); dfs2(a,b+1); } int main() { scanf("%d%d",&n,&m); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { v.push_back(1); } t.push_back(v); } scanf("%d",&k); for (int i=0; i<k; i++) { scanf("%d%d%d",&r,&c,&z); a=r^x; b=c^x; a%=n; b%=m; t[a][b]=0; ww=0; dfs(0,0); if (ww==0) { t[a][b]=1; x^=z; printf("TAK\n"); } else { dfs2(a,b+1); dfs2(a+1,b); printf("NIE\n"); } } } |