// #include <iostream>
// #include <utility>
#include <bits/stdc++.h>
using namespace std;
bool sortbysec(const pair<int,int> &a, const pair<int,int> &b){
return (a.second < b.second);
}
int main(){
ios_base::sync_with_stdio(false);
long long int t;
cin>>t;
for(int sth = 0; sth < t; sth++){
long long int n;
cin>>n;
vector< pair <long long int, long long int> > a_array;
vector< pair <long long int, long long int> > b_array;
for(long long int i = 0; i < n; i ++){
long long int l, a, b;
cin>>l>>a>>b;
a_array.push_back(make_pair(l, a));
b_array.push_back(make_pair(l, b));
}
sort(a_array.begin(), a_array.end(), sortbysec);
sort(b_array.begin(), b_array.end(), sortbysec);
long long int a_temp = 0, b_temp = 0;
long long int a_litres = 0, b_litres = 0;
bool flag = true;
while(b_array.size() > 0){
long long int b = b_array.back().second;
long long int l_b = b_array.back().first;
b_array.pop_back();
b_temp = (b_temp + b * l_b);
b_litres += l_b;
while(l_b > 0){
long long int a = a_array.back().second;
long long int l_a = a_array.back().first;
a_array.pop_back();
if(l_b <= l_a){
a_temp = (a_temp + a * l_b);
a_litres += l_b;
l_a -= l_b;
l_b = 0;
a_array.push_back(make_pair(l_a, a));
}
else{
a_temp = (a_temp + a * l_a);
a_litres += l_a;
l_b -= l_a;
}
}
if(b_temp > a_temp){
flag = false;
break;
}
}
if(flag && a_temp == b_temp){
cout<<"TAK"<<endl;
}
else{
cout<<"NIE"<<endl;
}
}
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 | // #include <iostream> // #include <utility> #include <bits/stdc++.h> using namespace std; bool sortbysec(const pair<int,int> &a, const pair<int,int> &b){ return (a.second < b.second); } int main(){ ios_base::sync_with_stdio(false); long long int t; cin>>t; for(int sth = 0; sth < t; sth++){ long long int n; cin>>n; vector< pair <long long int, long long int> > a_array; vector< pair <long long int, long long int> > b_array; for(long long int i = 0; i < n; i ++){ long long int l, a, b; cin>>l>>a>>b; a_array.push_back(make_pair(l, a)); b_array.push_back(make_pair(l, b)); } sort(a_array.begin(), a_array.end(), sortbysec); sort(b_array.begin(), b_array.end(), sortbysec); long long int a_temp = 0, b_temp = 0; long long int a_litres = 0, b_litres = 0; bool flag = true; while(b_array.size() > 0){ long long int b = b_array.back().second; long long int l_b = b_array.back().first; b_array.pop_back(); b_temp = (b_temp + b * l_b); b_litres += l_b; while(l_b > 0){ long long int a = a_array.back().second; long long int l_a = a_array.back().first; a_array.pop_back(); if(l_b <= l_a){ a_temp = (a_temp + a * l_b); a_litres += l_b; l_a -= l_b; l_b = 0; a_array.push_back(make_pair(l_a, a)); } else{ a_temp = (a_temp + a * l_a); a_litres += l_a; l_b -= l_a; } } if(b_temp > a_temp){ flag = false; break; } } if(flag && a_temp == b_temp){ cout<<"TAK"<<endl; } else{ cout<<"NIE"<<endl; } } return 0; } |
English