#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> PII; typedef vector<int> VI; typedef pair<ll, ll> PLL; #define REP(i, j) for(int i=0;i<j;i++) #define FOR(i, b, e) for(int i=b; i<=e; i++) #define FORD(i, b, e) for(int i=b; i>=e; i--) #define SIZE(x) ((int)x.size()) #define LAST(x) (x[SIZE(x)-1]) #define mp make_pair #define pb push_back #define st first #define nd second #define sp ' ' #define ent '\n' int t; int n, a, b, l; ll suma; vector<PII> ma, chce; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> t; while(t--){ cin >> n; suma = 0; REP(i, n){ cin >> l >> a >> b; suma+=((b-a)*l); ma.pb({a, l}); chce.pb({b, l}); } if(suma!=0){ cout << "NIE" << ent; ma.clear(); chce.clear(); }else{ sort(ma.begin(), ma.end()); sort(chce.begin(), chce.end()); int pocz_chce = 0; int pocz_ma = 0; while(pocz_chce<SIZE(chce) && pocz_ma<SIZE(ma) && chce[pocz_chce].st==ma[pocz_ma].st){ int pom1 = min(chce[pocz_chce].nd, ma[pocz_ma].nd); chce[pocz_chce].nd-=pom1; ma[pocz_ma].nd-=pom1; if(chce[pocz_chce].nd==0)pocz_chce++; if(ma[pocz_ma].nd==0) pocz_ma++; } while(pocz_chce<SIZE(chce) && pocz_ma<SIZE(ma) && LAST(chce).st==LAST(ma).st){ int pom1 = min(LAST(chce).nd, LAST(ma).nd); LAST(chce).nd-=pom1; LAST(ma).nd-=pom1; if(LAST(chce).nd==0) chce.pop_back(); if(LAST(ma).nd==0) ma.pop_back(); } if(pocz_chce==SIZE(chce) && pocz_ma==SIZE(ma)){ cout << "TAK" << ent; }else if(LAST(chce).st>LAST(ma).st || ma[pocz_ma].st>chce[pocz_chce].st){ cout << "NIE" << ent; }else{ cout << "TAK" << ent; } } ma.clear(); chce.clear(); } return 0; }
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> PII; typedef vector<int> VI; typedef pair<ll, ll> PLL; #define REP(i, j) for(int i=0;i<j;i++) #define FOR(i, b, e) for(int i=b; i<=e; i++) #define FORD(i, b, e) for(int i=b; i>=e; i--) #define SIZE(x) ((int)x.size()) #define LAST(x) (x[SIZE(x)-1]) #define mp make_pair #define pb push_back #define st first #define nd second #define sp ' ' #define ent '\n' int t; int n, a, b, l; ll suma; vector<PII> ma, chce; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> t; while(t--){ cin >> n; suma = 0; REP(i, n){ cin >> l >> a >> b; suma+=((b-a)*l); ma.pb({a, l}); chce.pb({b, l}); } if(suma!=0){ cout << "NIE" << ent; ma.clear(); chce.clear(); }else{ sort(ma.begin(), ma.end()); sort(chce.begin(), chce.end()); int pocz_chce = 0; int pocz_ma = 0; while(pocz_chce<SIZE(chce) && pocz_ma<SIZE(ma) && chce[pocz_chce].st==ma[pocz_ma].st){ int pom1 = min(chce[pocz_chce].nd, ma[pocz_ma].nd); chce[pocz_chce].nd-=pom1; ma[pocz_ma].nd-=pom1; if(chce[pocz_chce].nd==0)pocz_chce++; if(ma[pocz_ma].nd==0) pocz_ma++; } while(pocz_chce<SIZE(chce) && pocz_ma<SIZE(ma) && LAST(chce).st==LAST(ma).st){ int pom1 = min(LAST(chce).nd, LAST(ma).nd); LAST(chce).nd-=pom1; LAST(ma).nd-=pom1; if(LAST(chce).nd==0) chce.pop_back(); if(LAST(ma).nd==0) ma.pop_back(); } if(pocz_chce==SIZE(chce) && pocz_ma==SIZE(ma)){ cout << "TAK" << ent; }else if(LAST(chce).st>LAST(ma).st || ma[pocz_ma].st>chce[pocz_chce].st){ cout << "NIE" << ent; }else{ cout << "TAK" << ent; } } ma.clear(); chce.clear(); } return 0; } |