#include <bits/stdc++.h> #define maxn 10000 #define ll long long #define mp make_pair using namespace std; map<pair<int,int>, bool> czy, czy1; bool spraw (int n, int m) { for(int i=0; i<n; ++i) { for(int j=0; j<m; ++j) { if(i==0&&j==0) czy1[mp(i,j)]=true; else if (i==0) czy1[mp(i,j)]=((!czy[mp(i,j)])&&czy1[mp(i,j-1)]); else if (j==0) czy1[mp(i,j)]=((!czy[mp(i,j)])&&czy1[mp(i-1,j)]); else czy1[mp(i,j)]=((!czy[mp(i,j)])&&(czy1[mp(i-1,j)]||czy1[mp(i,j-1)])); } } return czy1[mp(n-1,m-1)]; } int main() { int n,m,k,r,c,z; int x=0; scanf("%d%d%d", &n, &m, &k); for(int i=0; i<k; ++i) { scanf("%d%d%d", &r, &c, &z); int warx = (r^x)%n; int wary = (c^x)%m; //cout << warx << " " << wary << endl; czy[mp(warx,wary)]=true; if(spraw(n,m)) { puts("NIE"); } else { puts("TAK"); x=x^z; czy[mp(warx,wary)]=false; } } 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 | #include <bits/stdc++.h> #define maxn 10000 #define ll long long #define mp make_pair using namespace std; map<pair<int,int>, bool> czy, czy1; bool spraw (int n, int m) { for(int i=0; i<n; ++i) { for(int j=0; j<m; ++j) { if(i==0&&j==0) czy1[mp(i,j)]=true; else if (i==0) czy1[mp(i,j)]=((!czy[mp(i,j)])&&czy1[mp(i,j-1)]); else if (j==0) czy1[mp(i,j)]=((!czy[mp(i,j)])&&czy1[mp(i-1,j)]); else czy1[mp(i,j)]=((!czy[mp(i,j)])&&(czy1[mp(i-1,j)]||czy1[mp(i,j-1)])); } } return czy1[mp(n-1,m-1)]; } int main() { int n,m,k,r,c,z; int x=0; scanf("%d%d%d", &n, &m, &k); for(int i=0; i<k; ++i) { scanf("%d%d%d", &r, &c, &z); int warx = (r^x)%n; int wary = (c^x)%m; //cout << warx << " " << wary << endl; czy[mp(warx,wary)]=true; if(spraw(n,m)) { puts("NIE"); } else { puts("TAK"); x=x^z; czy[mp(warx,wary)]=false; } } return 0; } |