#include <iostream> #include <vector> #include <string> using namespace std; typedef long long int LI; typedef vector< LI > VLI; string solve(const LI& N, const VLI& L, const VLI& A, const VLI& B) { LI minB = B[0]; LI maxB = B[0]; LI minA = A[0]; LI maxA = A[0]; LI sumA = 0; LI sumB = 0; for (LI n = 0; n<N; ++n) { if (A[n] < minA) minA = A[n]; else if (B[n] < minB) minB = B[n]; if (A[n] > maxA) maxA = A[n]; else if (B[n] > maxB) maxB = B[n]; sumA += L[n]*A[n]; sumB += L[n]*B[n]; } if (sumA != sumB || minB < minA || maxB > maxA) return "NIE"; return "TAK"; } int main() { LI T; cin >> T; vector< string > sol; for (LI t = 0; t<T; ++t) { VLI L, A, B; LI N, l, a, b; cin >> N; for (LI n = 0; n<N; ++n) { cin >> l >> a >> b; L.push_back(l); A.push_back(a); B.push_back(b); } sol.push_back(solve( N, L, A, B)); } for (LI t = 0; t<T; ++t) { cout << sol[t] << 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 | #include <iostream> #include <vector> #include <string> using namespace std; typedef long long int LI; typedef vector< LI > VLI; string solve(const LI& N, const VLI& L, const VLI& A, const VLI& B) { LI minB = B[0]; LI maxB = B[0]; LI minA = A[0]; LI maxA = A[0]; LI sumA = 0; LI sumB = 0; for (LI n = 0; n<N; ++n) { if (A[n] < minA) minA = A[n]; else if (B[n] < minB) minB = B[n]; if (A[n] > maxA) maxA = A[n]; else if (B[n] > maxB) maxB = B[n]; sumA += L[n]*A[n]; sumB += L[n]*B[n]; } if (sumA != sumB || minB < minA || maxB > maxA) return "NIE"; return "TAK"; } int main() { LI T; cin >> T; vector< string > sol; for (LI t = 0; t<T; ++t) { VLI L, A, B; LI N, l, a, b; cin >> N; for (LI n = 0; n<N; ++n) { cin >> l >> a >> b; L.push_back(l); A.push_back(a); B.push_back(b); } sol.push_back(solve( N, L, A, B)); } for (LI t = 0; t<T; ++t) { cout << sol[t] << endl; } return 0; } |