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
79
80
81
82
83
84
85
// Potyczki Algorytmiczne 2014
// Zadanie: LUS
// Lustra [B]

#include <climits>
#include <iostream>

using namespace std;

int main()
{
	int liczbaTestow;
	cin >> liczbaTestow;
	
	for (int i = 0; i < liczbaTestow; i++)
	{
		int minimalnaSzerokosc = INT_MAX;
		int minimalnaWysokosc = INT_MAX;
		
		int maksymalnaSzerokosc = 0;
		int maksymalnaWysokosc = 0;
		
		int liczbaZakladow;
		cin >> liczbaZakladow;
		
		bool czyMajoryzuje = false;
		
		for (int j = 0; j < liczbaZakladow; j++)
		{
			int punktA_szerokosc;
			cin >> punktA_szerokosc;
			
			int punktB_szerokosc;
			cin >> punktB_szerokosc;
			
			int punktA_wysokosc;
			cin >> punktA_wysokosc;
			
			int punktB_wysokosc;
			cin >> punktB_wysokosc;
			
			if ((punktA_szerokosc <= minimalnaSzerokosc) && (punktA_wysokosc <= minimalnaWysokosc))
			{
				if ((punktB_szerokosc >= maksymalnaSzerokosc) && (punktB_wysokosc >= maksymalnaWysokosc))
				{
					czyMajoryzuje = true;
					
					minimalnaSzerokosc = punktA_szerokosc;
					minimalnaWysokosc = punktA_wysokosc;
					
					maksymalnaSzerokosc = punktB_szerokosc;
					maksymalnaWysokosc = punktB_wysokosc;
				}
			}
			
			if (punktA_szerokosc < minimalnaSzerokosc)
			{
				minimalnaSzerokosc = punktA_szerokosc;
				czyMajoryzuje = false;
			}
			
			if (punktA_wysokosc < minimalnaWysokosc)
			{
				minimalnaWysokosc = punktA_wysokosc;
				czyMajoryzuje = false;
			}
			
			if (punktB_szerokosc > maksymalnaSzerokosc)
			{
				maksymalnaSzerokosc = punktB_szerokosc;
				czyMajoryzuje = false;
			}
			
			if (punktB_wysokosc > maksymalnaWysokosc)
			{
				maksymalnaWysokosc = punktB_wysokosc;
				czyMajoryzuje = false;
			}
		}
		
		cout << (czyMajoryzuje ? "TAK" : "NIE") << endl;
	}

	return 0;
}