가장 큰 삼각형

시간 제한3초메모리 제한512 MB

요약
최대 100개의 직선이 주어질 때, 세 직선으로 만들 수 있는 삼각형 중 둘레가 가장 큰 것을 구하거나 삼각형이 없으면 그 사실을 출력한다.
난이도

보통10점 중 5점

유형
기하, 완전 탐색, 수학, 구현
정답자
아직 제출이 없습니다

문제

세 개의 무한 직선은 삼각형을 하나 정한다. 단, 세 직선이 한 점에서 만나거나 일부가 평행하면 삼각형이 만들어지지 않는다.

무한 직선의 모음이 주어질 때, 그중 세 직선으로 만들 수 있는 삼각형 둘레의 최댓값은 얼마인가?

입력

첫째 줄에는 무한 직선의 개수를 나타내는 정수 n (3 ≤ n ≤ 100)이 주어진다.

다음 n개의 줄에는 무한 직선의 모음이 주어진다. i번째 줄에는 네 정수 x1, y1, x2, y2 (−10 000 ≤ x1, y1, x2, y2 ≤ 10 000)가 주어지며, (x1, y1) ≠ (x2, y2)는 i번째 무한 직선 위의 서로 다른 두 점이다.

출력

무한 직선 중 세 개로 만들 수 있는 가장 큰 삼각형의 둘레를 실수 하나로 출력한다. 정답과의 절대 오차 또는 상대 오차가 10−5 이내이면 정답으로 인정된다.

주어진 직선으로 삼각형을 만들 수 없다면 대신 "no triangle"이라는 메시지를 출력한다.

예제3

  1. 예제 1

    입력
    3
    0 0 0 1
    0 0 1 0
    0 1 1 0
    
    예상 출력
    3.4142135624
    
  2. 예제 2

    입력
    3
    0 0 0 1
    0 0 1 0
    0 0 1 1
    
    예상 출력
    no triangle
    
  3. 예제 3

    입력
    4
    0 0 0 1
    0 4 3 0
    0 0 1 0
    -1 -1 1 1
    
    예상 출력
    12.0000000000