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
#include<iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
#define M 50002
struct Auto { int nr; int poz; int wys;};
bool Por(const Auto& a1, const Auto& a2) { return a1.poz<a2.poz; };

int main( )
{
    ios_base::sync_with_stdio(0);
    int t, n, w, ans, aaa, x1, x2, y1, y2, W;
    Auto A[M], B[M];
    cin>>t;
    for(int i=1; i<=t; ++i) {
      ans=1; aaa=0;
      cin>>n>>W;
      for(int j=1; j<=n; ++j) {
	cin>>x1>>y1>>x2>>y2;
	A[j].nr=j;
	A[j].poz=min(x1,x2);
	A[j].wys=abs(y1-y2);
	if(A[j].wys>W/2)  aaa=1;
      }
      for(int j=1; j<=n; ++j) {
	cin>>x1>>y1>>x2>>y2;
	B[j].nr=j;
	B[j].poz=min(x1,x2);
	B[j].wys=abs(y1-y2);
      }
      
      if(aaa==0) cout<<"TAK\n";
      else {
	sort(A+1,A+n+1, Por);
	sort(B+1,B+n+1, Por);
	for(int j=1; j<=n; ++j) {
	  for(int k=j; k<=n; ++k) {
	    if(A[j].nr==B[k].nr) {
	      for(int s=k; s>j; --s) {
		swap(B[s].nr,B[s-1].nr);
		swap(B[s].poz,B[s-1].poz);
		swap(B[s].wys,B[s-1].wys);
	      }
	      break;
	    }
	    else if(A[j].wys+B[k].wys>W) {
	      ans=0;  k=n+1;  j=n+1;
	    }
	  }
	}
	if(ans==1)  cout<<"TAK\n";
        else  cout<<"NIE\n";
      }
    }
  return 0;
}