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
#include <iostream>
#include <vector>

using namespace std;

void Sprawdz(int i);
void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n);
void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2);
void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k);
void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci);

int main()
{
    ios_base::sync_with_stdio(0);
    int t;
    cin>>t;
    for(int i=0; i<t; i++)
    {
        int k;
        cin>>k;
        Sprawdz(k);
    }
    return 0;
}
void PobierzDane(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2,int n)
{
    for(int i=0; i<n; i++)
    {
        int tmp;
        cin>>tmp;
        s1.push_back(tmp);
        cin>>tmp;
        s2.push_back(tmp);
        cin>>tmp;
        w1.push_back(tmp);
        cin>>tmp;
        w2.push_back(tmp);
    }
}
void Sprawdz(int i)
{
    vector<int> s1, s2, w1, w2, kandydaci;
    int l_ekstremum=0;
    int p_ekstremum=0;
    PobierzDane(s1,s2,w1,w2,i);
    WyszukajEkstremaNaSzerokosci(l_ekstremum, p_ekstremum, s1,s2);
    SzukajPrzedzialu(kandydaci, s1, s2, l_ekstremum, p_ekstremum);
    SprawdzajKandydatowNaWysokosci(s1,s2,w1,w2,kandydaci);
}
void WyszukajEkstremaNaSzerokosci(int &p, int &k, vector<int> &s1, vector<int> &s2)
{
    int l_t=s1[0];
    int p_t=s2[0];
    for(int i=0; i<s1.size(); i++)
    {
        if(s1[i]<=l_t)
        {
            l_t=s1[i];
        }
        if(s2[i]>=p_t)
        {
            p_t=s2[i];
        }
    }
    p=l_t;
    k=p_t;
}

void SzukajPrzedzialu(vector<int> &kandydaci, vector<int> &s1, vector<int> &s2, int p, int k)
{
    for(int i=0; i<s1.size(); i++)
    {
        if(s1[i]<=p && s2[i]>=k)
        {
            kandydaci.push_back(i);
        }
    }
}

void SprawdzajKandydatowNaWysokosci(vector<int> &s1, vector<int> &s2, vector<int> &w1, vector<int> &w2, vector<int>&kandydaci)
{
    if(kandydaci.size()!=0)
    {
        bool czy_znaleziono=1;
        for(int i=0; i<kandydaci.size(); i++)
        {
            czy_znaleziono=1;
            int kandydat=kandydaci[i];
            for(int j=0; j<w1.size(); j++)
            {
                if(w1[kandydat]>w1[j] || w2[kandydat]<w2[j])
                {
                    czy_znaleziono=0;
                    break;
                }
            }
            if(czy_znaleziono)
            {
                cout<<"TAK"<<endl;
                break;
            }
        }
        if(czy_znaleziono==0)
        {
            cout<<"NIE"<<endl;
        }
    }
    else
    {cout<<"NIE"<<endl;}
}