#include <bits/stdc++.h> using namespace std; long long licz,licz2,sum,licztes,b[100010],c[100010],d[100010],a,nie; pair <long long, long long> lew[100010],praw[100010]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>licztes; for(int xx=0;xx<licztes;xx++) { cin>>a; for(int i=0;i<a;i++) { cin>>b[i]>>c[i]>>d[i]; lew[i]=make_pair(c[i],b[i]); praw[i]=make_pair(d[i],b[i]); } sort(lew,lew+a); sort(praw,praw+a); licz=0; licz2=0; sum=0; nie=0; for(int i=0;i<a;i++) { licz2=0; while(licz2<praw[i].second) { if(lew[licz].second>praw[i].second-licz2) { lew[licz].second-=(praw[i].second-licz2); sum+=lew[licz].first*(praw[i].second-licz2); licz2=praw[i].second; }else { sum+=lew[licz].second*lew[licz].first; licz2+=lew[licz].second; licz++; } } // cout<<sum<<endl; if(praw[i].first*praw[i].second<sum) { nie=1; break; }else { sum-=praw[i].first*praw[i].second; } } for(int i=0;i<a;i++) { lew[i]=make_pair(c[i],b[i]); } sort(lew,lew+a); reverse(praw,praw+a); reverse(lew,lew+a); licz=0; licz2=0; sum=0; for(int i=0;i<a;i++) { licz2=0; while(licz2<praw[i].second) { if(lew[licz].second>praw[i].second-licz2) { lew[licz].second-=(praw[i].second-licz2); sum+=lew[licz].first*(praw[i].second-licz2); licz2=praw[i].second; }else { sum+=lew[licz].second*lew[licz].first; licz2+=lew[licz].second; licz++; } } if(praw[i].first*praw[i].second>sum) { nie=1; break; }else { sum-=praw[i].first*praw[i].second; } } if(nie==1) { cout<<"NIE"<<"\n"; }else { cout<<"TAK"<<"\n"; } } 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 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 | #include <bits/stdc++.h> using namespace std; long long licz,licz2,sum,licztes,b[100010],c[100010],d[100010],a,nie; pair <long long, long long> lew[100010],praw[100010]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>licztes; for(int xx=0;xx<licztes;xx++) { cin>>a; for(int i=0;i<a;i++) { cin>>b[i]>>c[i]>>d[i]; lew[i]=make_pair(c[i],b[i]); praw[i]=make_pair(d[i],b[i]); } sort(lew,lew+a); sort(praw,praw+a); licz=0; licz2=0; sum=0; nie=0; for(int i=0;i<a;i++) { licz2=0; while(licz2<praw[i].second) { if(lew[licz].second>praw[i].second-licz2) { lew[licz].second-=(praw[i].second-licz2); sum+=lew[licz].first*(praw[i].second-licz2); licz2=praw[i].second; }else { sum+=lew[licz].second*lew[licz].first; licz2+=lew[licz].second; licz++; } } // cout<<sum<<endl; if(praw[i].first*praw[i].second<sum) { nie=1; break; }else { sum-=praw[i].first*praw[i].second; } } for(int i=0;i<a;i++) { lew[i]=make_pair(c[i],b[i]); } sort(lew,lew+a); reverse(praw,praw+a); reverse(lew,lew+a); licz=0; licz2=0; sum=0; for(int i=0;i<a;i++) { licz2=0; while(licz2<praw[i].second) { if(lew[licz].second>praw[i].second-licz2) { lew[licz].second-=(praw[i].second-licz2); sum+=lew[licz].first*(praw[i].second-licz2); licz2=praw[i].second; }else { sum+=lew[licz].second*lew[licz].first; licz2+=lew[licz].second; licz++; } } if(praw[i].first*praw[i].second>sum) { nie=1; break; }else { sum-=praw[i].first*praw[i].second; } } if(nie==1) { cout<<"NIE"<<"\n"; }else { cout<<"TAK"<<"\n"; } } return 0; } |