#include<cstdio>
#include<algorithm>
#include<vector>
#define S 1000007
using namespace std;
typedef long long ll;
vector < pair < ll , ll > > V;
vector < pair < ll , ll > > V2;
ll dp[S];
ll dp2[S];
int main(void){
int t,n,m,c,d;
ll l,a,b,x;
bool ta;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i = 1; i <= n;i++){
scanf("%lld %lld %lld",&l,&a,&b);
V.push_back({a,l});
V2.push_back({b,l});
}
sort(V.begin(),V.end());
sort(V2.begin(),V2.end());
ll x1 = 0,x2 = 0;
x = 0;
int l1 = n-1, l2 = n-1;
bool ta = 0;
while(l1 > -1 || l2 > -1){
if(V[l1].second < V2[l2].second){
x += V[l1].second * (-V2[l2].first + V[l1].first);
V2[l2].second -= V[l1].second;
l1--;
}else if(V[l1].second > V2[l2].second){
x += V2[l2].second * (V[l1].first - V2[l2].first);
V[l1].second -= V2[l2].second;
l2--;
}else{
x += V2[l2].second * (V[l1].first - V2[l2].first);
l1--;
l2--;
}
if(x < 0){
printf("NIE\n");
ta = 1;
break;
}
}
if(!ta && x != 0){
printf("NIE\n");
}else if(!ta){
printf("TAK\n");
}
V.clear();
V2.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 | #include<cstdio> #include<algorithm> #include<vector> #define S 1000007 using namespace std; typedef long long ll; vector < pair < ll , ll > > V; vector < pair < ll , ll > > V2; ll dp[S]; ll dp2[S]; int main(void){ int t,n,m,c,d; ll l,a,b,x; bool ta; scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i = 1; i <= n;i++){ scanf("%lld %lld %lld",&l,&a,&b); V.push_back({a,l}); V2.push_back({b,l}); } sort(V.begin(),V.end()); sort(V2.begin(),V2.end()); ll x1 = 0,x2 = 0; x = 0; int l1 = n-1, l2 = n-1; bool ta = 0; while(l1 > -1 || l2 > -1){ if(V[l1].second < V2[l2].second){ x += V[l1].second * (-V2[l2].first + V[l1].first); V2[l2].second -= V[l1].second; l1--; }else if(V[l1].second > V2[l2].second){ x += V2[l2].second * (V[l1].first - V2[l2].first); V[l1].second -= V2[l2].second; l2--; }else{ x += V2[l2].second * (V[l1].first - V2[l2].first); l1--; l2--; } if(x < 0){ printf("NIE\n"); ta = 1; break; } } if(!ta && x != 0){ printf("NIE\n"); }else if(!ta){ printf("TAK\n"); } V.clear(); V2.clear(); } return 0; } |
English