#include<bits/stdc++.h> using namespace std; int t, n; map<long long, long long>aa; map<long long, long long>bb; bool check() { long long s1=0, s2=0; vector<pair<long long, long long>>aaa; vector<pair<long long, long long>>bbb; for(auto e:aa) bbb.push_back({e.first, e.second}); for(auto e:bb) aaa.push_back({e.first, e.second}); int j=0, k=0, i=0; for(auto e:aaa) { s1+=e.first*e.second; i=e.second; while(i) { if(bbb[j].second>=i+k) { k+=i; s2+=bbb[j].first*i; i=0; } else //zuzyj reszte z tego i przejdz do nastepnego { s2+=(bbb[j].second-k)*bbb[j].first; i-=bbb[j].second-k; k=0; ++j; } } if(s1<s2) return 0; } return 1; } int main() { long long a, b, c, w1, w2, mn, mx, mn1, mx1; scanf("%d", &t); while(t--) { mn=1e9+7; mx=0; mn1=1e9+6; mx1=1, w1=0, w2=0; scanf("%d", &n); for(int i=0;i^n;++i) { scanf("%lld%lld%lld", &a, &b, &c); aa[b]+=a; bb[c]+=a; w1+=a*b; w2+=a*c; mn=min(mn, b); mx=max(mx, b); mn1=min(mn1, c); mx1=max(mx1, c); } if(mx1<=mx && mn1>=mn && w1==w2 && check()) printf("TAK\n"); else printf("NIE\n"); aa.clear(); bb.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 | #include<bits/stdc++.h> using namespace std; int t, n; map<long long, long long>aa; map<long long, long long>bb; bool check() { long long s1=0, s2=0; vector<pair<long long, long long>>aaa; vector<pair<long long, long long>>bbb; for(auto e:aa) bbb.push_back({e.first, e.second}); for(auto e:bb) aaa.push_back({e.first, e.second}); int j=0, k=0, i=0; for(auto e:aaa) { s1+=e.first*e.second; i=e.second; while(i) { if(bbb[j].second>=i+k) { k+=i; s2+=bbb[j].first*i; i=0; } else //zuzyj reszte z tego i przejdz do nastepnego { s2+=(bbb[j].second-k)*bbb[j].first; i-=bbb[j].second-k; k=0; ++j; } } if(s1<s2) return 0; } return 1; } int main() { long long a, b, c, w1, w2, mn, mx, mn1, mx1; scanf("%d", &t); while(t--) { mn=1e9+7; mx=0; mn1=1e9+6; mx1=1, w1=0, w2=0; scanf("%d", &n); for(int i=0;i^n;++i) { scanf("%lld%lld%lld", &a, &b, &c); aa[b]+=a; bb[c]+=a; w1+=a*b; w2+=a*c; mn=min(mn, b); mx=max(mx, b); mn1=min(mn1, c); mx1=max(mx1, c); } if(mx1<=mx && mn1>=mn && w1==w2 && check()) printf("TAK\n"); else printf("NIE\n"); aa.clear(); bb.clear(); } return 0; } |