#include #include using namespace std; struct point{ double x; double y; point(){x = 0; y = 0;} point(double _x, double _y){ x = _x; y = _y; } }; const double PI = 3.1415926535; inline double distance(const point &p1, const point &p2){ return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y)); } inline double heron(double a, double b, double c){ double p = (a + b + c) / 2; return sqrt(p * (p - a) * (p - b) * (p - c)); } inline void print(const point &p){ printf("(%lf, %lf) ", p.x, p.y); } int main(){ //freopen("baruri.in", "r", stdin); point A, B, C; double x, y, distAB, distBC, distCA; double AreaABC, AreaA, AreaB, AreaC; double _AunionB_diffC; scanf("%lf %lf", &x, &y); A = point(x, y); scanf("%lf %lf", &x, &y); B = point(x, y); scanf("%lf %lf", &x, &y); C = point(x, y); distAB = distance(A, B); distBC = distance(B, C); distCA = distance(C, A); AreaABC = heron(distAB, distBC, distCA); AreaA = PI * (distAB / 2) * (distAB / 2); AreaB = PI * (distCA / 2) * (distCA / 2); AreaC = PI * (distBC / 2) * (distBC / 2); _AunionB_diffC = (AreaA / 2) + (AreaB / 2) - (AreaC - AreaABC); printf("%.5lf", AreaABC); return 0; }