#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n, l, a, b;
long long suma = 0;
vector<pair<int, int>> pocz, kon;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d%d%d", &l, &a, &b);
suma += (long long)l * (a-b);
pocz.emplace_back(a, l);
kon.emplace_back(b, l);
}
if (suma != 0) {
puts("NIE");
continue;
}
sort(pocz.begin(), pocz.end());
sort(kon.begin(), kon.end());
int suma_obj = 0;
long long suma_temp = 0;
while (!kon.empty()) {
suma_obj += kon.back().second;
suma_temp += (long long)kon.back().first * kon.back().second;
kon.pop_back();
while (suma_obj > 0) {
if (suma_obj > pocz.back().second) {
suma_obj -= pocz.back().second;
suma_temp -= (long long)pocz.back().first * pocz.back().second;
pocz.pop_back();
} else {
suma_temp -= (long long)pocz.back().first * suma_obj;
pocz.back().second -= suma_obj;
suma_obj = 0;
}
}
if (suma_temp > 0) {
puts("NIE");
goto nowytest;
}
}
puts("TAK");
nowytest: ;
}
}
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 | #include <cstdio> #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int t; scanf("%d", &t); while (t--) { int n, l, a, b; long long suma = 0; vector<pair<int, int>> pocz, kon; scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d%d%d", &l, &a, &b); suma += (long long)l * (a-b); pocz.emplace_back(a, l); kon.emplace_back(b, l); } if (suma != 0) { puts("NIE"); continue; } sort(pocz.begin(), pocz.end()); sort(kon.begin(), kon.end()); int suma_obj = 0; long long suma_temp = 0; while (!kon.empty()) { suma_obj += kon.back().second; suma_temp += (long long)kon.back().first * kon.back().second; kon.pop_back(); while (suma_obj > 0) { if (suma_obj > pocz.back().second) { suma_obj -= pocz.back().second; suma_temp -= (long long)pocz.back().first * pocz.back().second; pocz.pop_back(); } else { suma_temp -= (long long)pocz.back().first * suma_obj; pocz.back().second -= suma_obj; suma_obj = 0; } } if (suma_temp > 0) { puts("NIE"); goto nowytest; } } puts("TAK"); nowytest: ; } } |
English