#include <bits/stdc++.h> #include <math.h> #include <chrono> using namespace std; #pragma GCC optimize("-O3") #define endl "\n" #define mp make_pair #define st first #define nd second #define pii pair<int, int> #define pb push_back #define _upgrade ios_base::sync_with_stdio(0), cout.setf(ios::fixed), cout.precision(10) //cin.tie(0); cout.tie(0); #define REP(i, n) for (int i = 0; i < (n); ++i) #define FWD(i, a, b) for (int i = (a); i < (b); ++i) #define rep(i, n) for (int i = 0; i < (n); ++i) #define fwd(i, a, b) for (int i = (a); i < (b); ++i) #define all(c) (c).begin(), (c).end() #define what(x) cerr << #x << " is " << x << endl; #define int long long vector<pii> mam; vector<pii> chce; int n; bool solve() { int ile_litrow = 0; int srednia_moja = 0; int srednia_jego = 0; for (int i = n - 1; i >= 0; i--) { ile_litrow += mam[i].nd; srednia_moja += mam[i].nd * mam[i].st; while (ile_litrow != 0) { if (chce.back().nd > ile_litrow) { srednia_jego += ile_litrow * chce.back().st; chce.back().nd -= ile_litrow; ile_litrow = 0; } else { srednia_jego += chce.back().nd * chce.back().st; ile_litrow -= chce.back().nd; chce.pop_back(); } } if ((srednia_moja > srednia_jego) || (i == 0 && srednia_moja != srednia_jego)) { //cerr << srednia_moja << " " << srednia_jego << " " << i << endl; return false; } } return true; } void pre() { cin >> n; mam.resize(n); chce.resize(n); rep(i, n) { int a, b, c; cin >> a >> b >> c; mam[i] = {c, a}; chce[i] = {b, a}; } sort(all(chce)); sort(all(mam)); } main() { _upgrade; int Z; cin >> Z; while (Z--) { pre(); // cerr << solve(); cout << (solve() ? "TAK" : "NIE") << endl; } }
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 | #include <bits/stdc++.h> #include <math.h> #include <chrono> using namespace std; #pragma GCC optimize("-O3") #define endl "\n" #define mp make_pair #define st first #define nd second #define pii pair<int, int> #define pb push_back #define _upgrade ios_base::sync_with_stdio(0), cout.setf(ios::fixed), cout.precision(10) //cin.tie(0); cout.tie(0); #define REP(i, n) for (int i = 0; i < (n); ++i) #define FWD(i, a, b) for (int i = (a); i < (b); ++i) #define rep(i, n) for (int i = 0; i < (n); ++i) #define fwd(i, a, b) for (int i = (a); i < (b); ++i) #define all(c) (c).begin(), (c).end() #define what(x) cerr << #x << " is " << x << endl; #define int long long vector<pii> mam; vector<pii> chce; int n; bool solve() { int ile_litrow = 0; int srednia_moja = 0; int srednia_jego = 0; for (int i = n - 1; i >= 0; i--) { ile_litrow += mam[i].nd; srednia_moja += mam[i].nd * mam[i].st; while (ile_litrow != 0) { if (chce.back().nd > ile_litrow) { srednia_jego += ile_litrow * chce.back().st; chce.back().nd -= ile_litrow; ile_litrow = 0; } else { srednia_jego += chce.back().nd * chce.back().st; ile_litrow -= chce.back().nd; chce.pop_back(); } } if ((srednia_moja > srednia_jego) || (i == 0 && srednia_moja != srednia_jego)) { //cerr << srednia_moja << " " << srednia_jego << " " << i << endl; return false; } } return true; } void pre() { cin >> n; mam.resize(n); chce.resize(n); rep(i, n) { int a, b, c; cin >> a >> b >> c; mam[i] = {c, a}; chce[i] = {b, a}; } sort(all(chce)); sort(all(mam)); } main() { _upgrade; int Z; cin >> Z; while (Z--) { pre(); // cerr << solve(); cout << (solve() ? "TAK" : "NIE") << endl; } } |