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

using namespace std;

struct Kubeczki{
    int rozmiar;
    int temperatura;

    bool operator<(const Kubeczki& inny){
        return temperatura < inny.temperatura;
    }
};

int main()
{
    ios_base::sync_with_stdio(false);
    int t = 0, n=0, bilans = 0, iter = 0, poz_rozmiar = 0, ob_temp = 0;
    bool is_full = false, is_end = false;
    cin>>t;
    for(int i=0; i<t; ++i){
        cin>>n;
        int tab[3][n];
        Kubeczki k_now[n];
        Kubeczki k_new[n];

        for(int j=0; j<n; ++j){
            cin>>tab[0][j];
            cin>>tab[1][j];
            cin>>tab[2][j];
            k_now[j].rozmiar = tab[0][j];
            k_now[j].temperatura = tab[1][j];
            k_new[j].rozmiar = tab[0][j];
            k_new[j].temperatura = tab[2][j];
        }
        std::sort(&k_now[0], &k_now[n]);
        std::sort(&k_new[0], &k_new[n]);

        for(int j=0; j<n; ++j){
            is_full = false;
            poz_rozmiar = k_new[j].rozmiar;
            while(!is_full){
                if(k_now[iter].rozmiar < poz_rozmiar){
                    ob_temp = (k_now[iter].rozmiar * k_now[iter].temperatura) + ob_temp;
                    poz_rozmiar -= k_now[iter].rozmiar;
                    k_now[iter].rozmiar = 0;
                    iter++;
                }
                else{
                    if(k_now[iter].rozmiar >= poz_rozmiar){
                            if((k_now[iter].rozmiar - poz_rozmiar) == 0){
                                ob_temp = ((k_now[iter].rozmiar) * k_now[iter].temperatura) + ob_temp;
                            }else{
                                ob_temp = (poz_rozmiar * k_now[iter].temperatura) + ob_temp;
                            }
                        k_now[iter].rozmiar -= poz_rozmiar;
                        is_full = true;
                        bilans += k_new[j].temperatura * k_new[j].rozmiar - ob_temp;
                        if(k_now[iter].rozmiar == 0){
                            iter++;
                        }
                    }
                }
            }
            if(bilans < 0){
                is_end = true;
            }
            is_full = false;
            ob_temp = 0;
            poz_rozmiar = 0;
        }
        if(bilans == 0 && is_end == false){
            cout<<"TAK"<<endl;
        }else{
            cout<<"NIE"<<endl;
        }
        bilans = 0;
        iter = 0;
        is_end = false;
    }
    return 0;
}