만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

단순 다각형

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

요약
x축에 한쪽 끝이 있는 n개의 선분이 모두 하나의 단순 다각형 경계에 놓일 수 있는지 판단하고, 가능하면 경계 길이의 최솟값을 구합니다.
난이도

어려움10점 중 9점

유형
기하, 동적 계획법, 정렬
정답자
아직 제출이 없습니다

문제

SS를 nn개의 선분으로 이루어진 집합이라고 하자. 각 선분의 한쪽 끝점은 x축 위에 있고, 다른 쪽 끝점은 x축 위쪽에 있다. 모든 끝점은 서로 다르지만, 선분끼리는 내부에서 교차할 수 있다.

SS의 모든 선분이 단순 다각형 PP의 경계에 포함되도록 PP를 그리려 한다. 즉, 각 선분은 PP의 변이거나 변의 일부여야 한다. 다각형 PP가 단순하다는 것은 각 꼭짓점의 내각이 180∘180^\circ가 아니고, 인접한 두 변이 꼭짓점에서 만나는 경우를 제외하고는 어떤 두 변도 만나지 않는다는 뜻이다.

그림 H.1은 단순 다각형을 그릴 수 있는 선분의 예이다. 검은색 실선이 SS의 선분이고, 빨간색 점선을 더하면 단순 다각형이 된다. 왼쪽 그림은 SS의 모든 끝점이 PP의 꼭짓점이다. 오른쪽 그림은 꼭짓점이 6개뿐인 단순 다각형으로, 두 끝점이 각각 PP의 변 내부에 놓인다. SS의 끝점이 반드시 PP의 꼭짓점일 필요는 없다.

그림 H.1: 단순 다각형을 그릴 수 있는 선분의 예.

그림 H.2는 단순 다각형을 그릴 수 없는 선분의 예이다.

그림 H.2: 단순 다각형을 그릴 수 없는 선분의 예.

단순 다각형이 여러 개 있을 때는 경계의 길이가 가장 짧은 것을 구한다. 그림 H.3은 같은 선분 집합에 대해 다른 어떤 단순 다각형보다 경계가 짧은 다각형이다.

그림 H.3: 경계의 길이가 최소인 단순 다각형.

주어진 선분 집합에 대해 단순 다각형이 존재하는지 판별하라. 존재한다면 경계의 길이가 최소인 단순 다각형을 찾아라.

입력

첫 줄에 선분의 개수 nn이 주어진다 (3≤n≤20,0003 \le n \le 20{,}000). 이어서 nn개의 줄에 정수 x1x_1, x2x_2, y2y_2가 차례로 주어진다 (1≤x1,x2,y2≤1061 \le x_1, x_2, y_2 \le 10^6). 각 줄은 끝점이 (x1,0)(x_1, 0)과 (x2,y2)(x_2, y_2)인 선분을 나타낸다. 모든 끝점은 서로 다르므로, 같은 위치에 놓인 두 끝점은 없다.

출력

한 줄을 출력한다. 단순 다각형이 존재하면 경계 길이의 최솟값을 소수점 첫째 자리까지 반올림하여 출력한다. 존재하지 않으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    4
    1 1 2
    2 2 1
    3 3 1
    4 4 2
    
    예상 출력
    12.0
    
  2. 예제 2

    입력
    4
    1 1 2
    2 3 2
    5 4 1
    7 1 4
    
    예상 출력
    19.3
    
  3. 예제 3

    입력
    4
    5 6 6
    4 3 2
    1 3 4
    9 7 3
    
    예상 출력
    -1