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
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <iostream>
#include <cstdlib>
#include <vector>

using namespace std;


void wczytLista(vector < vector <int> > &ListaRoz, vector <int> &maxnasz, int ile_firm)
{
	int liczba, max1, maxnow;
	maxnasz.resize(1);
	ListaRoz.resize(ile_firm);
	
	int t[ile_firm][4];
	
	for(int i=0; i<ile_firm; i++)
		for(int j=0; j<4; j++)
			cin >> t[i][j];
	
	for(int z=0; z<ile_firm; z++)
	{
		for(int i=t[z][0]; i<=t[z][1]; i++)
		{
			for(int j=t[z][2]; j<=t[z][3]; j++)
			{
				liczba=i*10+j;
				ListaRoz[z].push_back(liczba);
			}
		}
	max1=(t[z][1]-t[z][0]+1)*(t[z][3]-t[z][2]+1);
	if(z==0)
	{
		maxnow=max1;
		maxnasz[0]=z;
	}
	if(z!=0 && max1>maxnow)
	{
		maxnow=max1;
		maxnasz[0]=z;
	}
	if(z!=0 && max1==maxnow)
		maxnasz.push_back(z);	
			
	}
}

bool binary_search(int x, vector < vector <int> > &ListaRoz, vector <int> &maxnasz, int v)
{
int a=0;
int b=ListaRoz[maxnasz[v]].size()-1;
   while (a!=b)
   {
      int m=(a+b)/2;
      if(ListaRoz[maxnasz[v]][m]<x)
         a=m+1; 
      else
         b=m;  
   }
   if(ListaRoz[maxnasz[v]][a]==x) 
   		return true;
   return false;
}


int main()
{
int ile_testow, ile_firm, x;
vector < vector <int> > ListaRoz;
vector <int> maxnasz;
cin >> ile_testow;
bool odp=true;
bool rozw[ile_testow];
int p;

for(int c=0; c<ile_testow; c++)
{
ListaRoz.resize(0);
maxnasz.resize(0);
rozw[c]=true;
	cin >> ile_firm;
	wczytLista(ListaRoz, maxnasz, ile_firm);
	for(int v=0; v< maxnasz.size(); v++)
	{
	for(int i=0; i<ile_firm; i++)
	{
	if(i!=maxnasz[v])
	{
		for(int j=0; j<ListaRoz[i].size(); j++)
		{
			x=ListaRoz[i][j];
			if(!binary_search(x, ListaRoz, maxnasz, v))
			{
				j=ListaRoz[i].size()+1;
				rozw[c]=false;
			}
		}
	}
	}
	}
}

for(int q=0; q<ile_testow; q++)
{
	if(rozw[q]==true)
		cout << "TAK";
	else
		cout << "NIE";
	cout << endl;
}

return 0;
}