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
#include <iostream>
#include <sstream>
int main()
{
	int t;
	std::string temp;
	std::getline(std::cin, temp);
	std::istringstream line(temp);
	line >> t;
	for( int y = 0; y < t; y++ )
	{
		//std::string temp;
		std::getline(std::cin, temp);
		std::istringstream line(temp);
		int wynik = 0;
		long n;
		long long w;
		line >> n >> w;
		long long* table1 = new long long[n];
		long long* table2 = new long long[n];
		//Fory od wczytywania danych
		for( int s = 0; s < n; s++ )//Pierwotne polozenie
		{
			//std::string temp;
			std::getline(std::cin, temp);
			std::istringstream line(temp);
			line >> table1[(s*4)] >> table1[(s*4)+1] >> table1[(s*4)+2] >> table1[(s*4)+3];
		}
		for( int s = 0; s < n; s++ )//Docelowe polozenie
		{
			//std::string temp;
			std::getline(std::cin, temp);
			std::istringstream line(temp);
			line >> table2[(s*4)] >> table2[(s*4)+1] >> table2[(s*4)+2] >> table2[(s*4)+3];
		}
		//Z początkowej perspektywy
		for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko
		{
			for( int z = 0; z < n; z++ )
			{
				if( ( table1[z*4] >= table1[s*4] && table1[z*4] < table2[s*4] ) || ( table1[z*4] < table1[s*4] && table1[z*4] >= table2[s*4] ) )
				{
					if( table1[(s*4)+3]-table1[(s*4)+1] + table1[(z*4)+3]-table1[(z*4)+1] > w )
					{
						wynik = 1;
						break;
					}
				}

			}
		}
		//Z docelowej perspektywy
		for( int s = 0; s < n; s++ )//Żeby przelatywał wszystko
		{
			for( int z = 0; z < n; z++ )
			{
				if( ( table2[z*4] >= table1[s*4] && table2[z*4] < table2[s*4] ) || ( table2[z*4] < table1[s*4] && table2[z*4] >= table2[s*4] ) )
				{
					if( table1[(s*4)+3]-table1[(s*4)+1] + table2[(z*4)+3]-table2[(z*4)+1] > w )
					{
						wynik = 1;
						break;
					}
				}
			}
		}
		//Wyswietlanie wyniku
		if( wynik == 1 )
		{
			std::cout << "NIE\n";
		}
		else
		{
			std::cout << "TAK\n";
		}
		delete[] table1;
		delete[] table2;
	}
}