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
#include<stdio.h>
#include<stdlib.h>

struct str_zaklad
{
	long int w[2];
	long int h[2];
};

int main(void)
{
	//---pobieranie danych
	short il_test; //1->10
	scanf( "%hd", &il_test );
	short i; //licznik na il_test
	char **respont = malloc(il_test*sizeof(char)*4);//allokuje odpowiedzi
	for( i = 0; i < il_test; ++i ) { char tab[4]; respont[i] = tab; } 
	for( i = 0; i < il_test; ++i ) respont[i] = "NIE";
	for( i = 0; i < il_test; ++i )//petla po testach
	{	
		int il_zakl;//2-100'000
		scanf("%d", &il_zakl );
		struct str_zaklad * zaklad;//allokuje zaklady
		do{ zaklad = malloc( il_zakl * sizeof(struct str_zaklad) ); }while( zaklad == NULL );
		int j; //licznik po zaklad'ach
		for( j = 0; j < il_zakl; ++j) scanf("%ld %ld %ld %ld", &(zaklad[j].w[0]), &(zaklad[j].w[1]), &(zaklad[j].h[0]), &(zaklad[j].h[1]) );//zapelniam danymi zaklady z danego testu...
		//...
		
	//---algorytm
		int x, y; //liczniki po zakladach kazdy kontra kazdy
		for( x = 0; x < il_zakl; x++ )//kazdy...
		{
			for( y = 0; y < il_zakl;  )//kazdy z kazdym
			{	
				if( zaklad[x].w[0] - zaklad[y].w[0] > 0 ) break;
				else if( zaklad[x].w[1] - zaklad[y].w[1] < 0 ) break;
				else if( zaklad[x].h[0] - zaklad[y].h[0] > 0 ) break;
				else if( zaklad[x].h[1] - zaklad[y].h[1] < 0 ) break;
				y++;
			}
			if( y == il_zakl ) { respont[i] = "TAK"; break; } 
		}
		free(zaklad);
	}//petla po testach konczy obieg

	for( i = 0; i < il_test; ++i ) puts(respont[i]);
	free(respont);

	return 0;
}