만드는 중입니다

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

파이몬 다각형

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

요약
O를 제외한 점들을 두 그룹으로 나눕니다. 각 그룹이 O와 함께 엄격한 볼록다각형을 이루고 두 다각형의 변이 O에서만 만나도록 하며, 둘레의 합이 최대가 되는 값을 구합니다.
난이도

어려움10점 중 9점

유형
기하, 정렬, 투 포인터
정답자
아직 제출이 없습니다

문제

파이몬이 평면 위에 서로 다른 (n+1)(n+1)개의 점을 찍는다. 그중 하나는 특별한 점 O=(0,0)O=(0,0)이고, 나머지 점들의 집합을 S\mathbb{S}라고 한다.

점 집합 U\mathbb{U}가 엄격한 볼록 집합(strict convex set)이라는 것은 ∣U∣≥3|\mathbb{U}| \ge 3이고, U\mathbb{U}의 모든 점이 U\mathbb{U}로 만든 볼록 껍질 위에 정확히 놓이며, 세 점이 한 직선 위에 있지 않은 경우를 말한다.

S\mathbb{S}를 두 집합 A\mathbb{A}와 B\mathbb{B}로 나누어 다음 조건을 만족하게 하라.

  • A∩B=∅\mathbb{A} \cap \mathbb{B}=\emptyset
  • A∪B=S\mathbb{A} \cup \mathbb{B}=\mathbb{S}
  • ∣A∣≥2,∣B∣≥2|\mathbb{A}| \ge 2, |\mathbb{B}| \ge 2
  • A∪{O}\mathbb{A} \cup \{O\}는 엄격한 볼록 집합이다. 그 볼록 껍질을 CA∪{O}C_{\mathbb{A} \cup \{O\}}라고 한다.
  • B∪{O}\mathbb{B} \cup \{O\}는 엄격한 볼록 집합이다. 그 볼록 껍질을 CB∪{O}C_{\mathbb{B} \cup \{O\}}라고 한다.
  • CA∪{O}C_{\mathbb{A} \cup \{O\}}의 변과 CB∪{O}C_{\mathbb{B} \cup \{O\}}의 변은 OO에서만 만난다. 즉 두 변 모두에 놓이는 점은 OO 하나뿐이다.

두 볼록 껍질의 둘레 길이 합이 최대가 되도록 나누어라. 즉 (L(CA∪{O})+L(CB∪{O}))(L(C_{\mathbb{A} \cup \{O\}}) + L(C_{\mathbb{B} \cup \{O\}}))를 최대로 하는 유효한 분할 A\mathbb{A}, B\mathbb{B}를 구하라. 여기서 L(polygon)L(\text{polygon})은 해당 다각형의 둘레이다.

입력

테스트 케이스는 여러 개이다. 첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

첫 줄에 S\mathbb{S}의 점 개수 nn (4≤n≤5×1054 \le n \le 5 \times 10^5)이 주어진다.

이어지는 nn개의 줄에는 각각 두 정수 xix_i, yiy_i (−109≤xi,yi≤109-10^9 \le x_i, y_i \le 10^9, (xi,yi)≠(0,0)(x_i, y_i) \ne (0, 0))가 주어지며, 이는 S\mathbb{S}의 ii번째 점의 좌표이다.

한 테스트 케이스 안의 점들은 서로 다르다. 같은 직선 위에 세 점 이상이 놓일 수 있다. 모든 테스트 케이스의 nn을 합한 값은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 둘레 길이 합의 최댓값을 한 줄에 출력한다. 유효한 분할이 없으면 "0"(따옴표 제외)을 출력한다. 상대 오차 또는 절대 오차가 10−610^{-6} 미만이면 정답으로 인정한다.

힌트

그림은 첫 번째 예시 입력에 대해 유효한 분할(왼쪽)과 유효하지 않은 분할(오른쪽)을 보여준다.

예제1

  1. 예제 1

    입력
    3
    4
    0 3
    3 0
    2 3
    3 2
    5
    4 0
    5 -5
    -4 -2
    1 -2
    -5 -2
    4
    0 1
    1 0
    0 2
    1 1
    
    예상 출력
    17.2111025509
    36.6326947621
    0.0000000000