#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"); } } } |
English