#include <bits/stdc++.h> #define ll long long #define mp make_pair #define pb push_back #define ld long double #define ss(x) (int) x.size() #define fi first #define se second #define cat(x) cout << #x << " = " << x << endl using namespace std; const int nax = 1e5 + 111; pair <int,int> A[nax], B[nax]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int z; cin >> z; while (z--){ int n; cin >> n; for (int i = 1; n >= i; ++i){ cin >> A[i].se >> A[i].fi >> B[i].fi; B[i].se = A[i].se; } sort(A+1, A+n+1); reverse(A+1, A+n+1); sort(B+1, B+n+1); reverse(B+1, B+n+1); ll pole = 0; int i = 1, j = 1; while(i <= n){ int sze = min(A[i].se, B[j].se); if(A[i].fi > B[j].fi){ int wys = A[i].fi - B[j].fi; pole += 1ll * sze * wys; }else{ int wys = B[j].fi - A[i].fi; pole -= 1ll * sze * wys; if (pole < 0){ break; } } A[i].se -= sze; if(A[i].se == 0) i++; B[j].se -= sze; if(B[j].se == 0) j++; } if(i<=n) cout << "NIE\n"; else if(pole == 0) cout << "TAK\n"; else cout << "NIE\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 | #include <bits/stdc++.h> #define ll long long #define mp make_pair #define pb push_back #define ld long double #define ss(x) (int) x.size() #define fi first #define se second #define cat(x) cout << #x << " = " << x << endl using namespace std; const int nax = 1e5 + 111; pair <int,int> A[nax], B[nax]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int z; cin >> z; while (z--){ int n; cin >> n; for (int i = 1; n >= i; ++i){ cin >> A[i].se >> A[i].fi >> B[i].fi; B[i].se = A[i].se; } sort(A+1, A+n+1); reverse(A+1, A+n+1); sort(B+1, B+n+1); reverse(B+1, B+n+1); ll pole = 0; int i = 1, j = 1; while(i <= n){ int sze = min(A[i].se, B[j].se); if(A[i].fi > B[j].fi){ int wys = A[i].fi - B[j].fi; pole += 1ll * sze * wys; }else{ int wys = B[j].fi - A[i].fi; pole -= 1ll * sze * wys; if (pole < 0){ break; } } A[i].se -= sze; if(A[i].se == 0) i++; B[j].se -= sze; if(B[j].se == 0) j++; } if(i<=n) cout << "NIE\n"; else if(pole == 0) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } |