문제

링크

풀이

#include <stdio.h>
#include <math.h>
 
typedef struct Coord {
  int x;
  int y;
} Coord;
 
int main(void) {
  Coord a, b, c;
 
  scanf("%d %d %d %d %d %d", &a.x, &a.y, &b.x, &b.y, &c.x, &c.y);
 
  if ((a.x-b.x)*(a.y-c.y) == (a.x-c.x)*(a.y-b.y)) {
    printf("-1.0");
    return 0;
  }
 
  double ab = sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
  double bc = sqrt((b.x-c.x)*(b.x-c.x) + (b.y-c.y)*(b.y-c.y));
  double ca = sqrt((c.x-a.x)*(c.x-a.x) + (c.y-a.y)*(c.y-a.y));
 
  double min = (ab+bc)*2;
  min = min < (bc+ca)*2 ? min : (bc+ca)*2;
  min = min < (ca+ab)*2 ? min : (ca+ab)*2;
 
  double max = (ab+bc)*2;
  max = max > (bc+ca)*2 ? max : (bc+ca)*2;
  max = max > (ca+ab)*2 ? max : (ca+ab)*2;
 
  printf("%.15lf", max - min);
  return 0;
}