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
#include <cstdio>

#define MIN 1000000001
#define MAX 0

typedef struct szybaaaa{
	long long minW, maxW, minH, maxH;

} szyba;

int main(){

	int t, ileZes, ileFirm;
	
	scanf("%d", &ileZes);

	for(int t = 0; t<ileZes; t++){
		bool major = true;
		scanf("%d", &ileFirm);
		szyba *tab = new szyba[ileFirm];
		szyba lider;
		lider.minW = MAX;
		lider.minH = MAX;
		lider.maxW = MIN;
		lider.maxH = MIN;
		scanf("%lld%lld%lld%lld", &tab[0].minW, &tab[0].maxW, &tab[0].minH, &tab[0].maxH);
		lider = tab[0];
		for(int i=1; i<ileFirm; i++){
			scanf("%lld%lld%lld%lld", &tab[i].minW, &tab[i].maxW, &tab[i].minH, &tab[i].maxH);
			
			if(tab[i].minW <= lider.minW && tab[i].minH <= lider.minH && tab[i].maxW >= lider.maxW && tab[i].maxH >= lider.maxH){
				major = true;
				lider = tab[i];
				continue;
			}

			if(tab[i].minW >= lider.minW && tab[i].minH >= lider.minH && tab[i].maxW <= lider.maxW && tab[i].maxH <= lider.maxH)
				continue;

			if(major == true && (tab[i].minW >= lider.minW || tab[i].minH >= lider.minH || tab[i].maxW <= lider.maxW || tab[i].maxH <= lider.maxH)){
				major = false;
				lider.minW = (tab[i].minW <= lider.minW) ? tab[i].minW : lider.minW;
				lider.minH = (tab[i].minH <= lider.minH) ? tab[i].minH : lider.minH;
				lider.maxW = (tab[i].maxW >= lider.maxW) ? tab[i].maxW : lider.maxW;
                                lider.maxH = (tab[i].maxH >= lider.maxH) ? tab[i].maxH : lider.maxH;
				continue;
			}
		}

		if(major == true)
			printf("TAK\n");

		else
			printf("NIE\n");

	}

	return 0;
}