#include // cin, cout #include // sqrt struct Point { double x; double y; }; double calcDistance(Point a, Point b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); } Point cinPoint() { Point temp; std::cin >> temp.x >> temp.y; return temp; } struct Triangle { Point A; Point B; Point C; double Area; }; double calcArea(Triangle tri) { double a = calcDistance(tri.B, tri.C); double b = calcDistance(tri.A, tri.C); double c = calcDistance(tri.A, tri.B); double p = (a + b + c) / 2; return sqrt(p*(p-a)*(p-b)*(p-c)); // Heron's formula } Triangle createTriangle(Point A, Point B, Point C) { return { A, B, C, calcArea({A, B, C}) }; } Triangle cinTriangle() { Point tempA = cinPoint(), tempB = cinPoint(), tempC = cinPoint(); return createTriangle(tempA, tempB, tempC); } void coutTriangle(Triangle tri) { std::cout << "(" << tri.Area << ")" << std::endl; } int cmpByArea(Triangle tri1, Triangle tri2) { return (tri1.Area > tri2.Area) ? 1 : ((tri1.Area < tri2.Area) ? -1 : 0); } void sortTriangleArr(Triangle* triangles, int N, int (compare)(Triangle, Triangle)) { int indOfSmallest = 0; for (int i = 0; i < N - 1; i++, indOfSmallest = i) { for (int j = i + 1; j < N; j++) { if (compare(triangles[j], triangles[indOfSmallest]) < 0) indOfSmallest = j; } Triangle temp = triangles[i]; triangles[i] = triangles[indOfSmallest]; triangles[indOfSmallest] = temp; } } int main() { int N; std::cin >> N; Triangle* triangles = new Triangle[N]; for (int i = 0; i < N; i++) triangles[i] = cinTriangle(); sortTriangleArr(triangles, N, cmpByArea); for (int i = 0; i < N; i++) coutTriangle(triangles[i]); delete[] triangles; };