파이몬 다각형
시간 제한2초메모리 제한1024 MB
O를 제외한 점들을 두 그룹으로 나눕니다. 각 그룹이 O와 함께 엄격한 볼록다각형을 이루고 두 다각형의 변이 O에서만 만나도록 하며, 둘레의 합이 최대가 되는 값을 구합니다.
문제
파이몬이 평면 위에 서로 다른 개의 점을 찍는다. 그중 하나는 특별한 점 이고, 나머지 점들의 집합을 라고 한다.
점 집합 가 엄격한 볼록 집합(strict convex set)이라는 것은 이고, 의 모든 점이 로 만든 볼록 껍질 위에 정확히 놓이며, 세 점이 한 직선 위에 있지 않은 경우를 말한다.
를 두 집합 와 로 나누어 다음 조건을 만족하게 하라.
- 는 엄격한 볼록 집합이다. 그 볼록 껍질을 라고 한다.
- 는 엄격한 볼록 집합이다. 그 볼록 껍질을 라고 한다.
- 의 변과 의 변은 에서만 만난다. 즉 두 변 모두에 놓이는 점은 하나뿐이다.
두 볼록 껍질의 둘레 길이 합이 최대가 되도록 나누어라. 즉 를 최대로 하는 유효한 분할 , 를 구하라. 여기서 은 해당 다각형의 둘레이다.
입력
테스트 케이스는 여러 개이다. 첫 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.
첫 줄에 의 점 개수 ()이 주어진다.
이어지는 개의 줄에는 각각 두 정수 , (, )가 주어지며, 이는 의 번째 점의 좌표이다.
한 테스트 케이스 안의 점들은 서로 다르다. 같은 직선 위에 세 점 이상이 놓일 수 있다. 모든 테스트 케이스의 을 합한 값은 을 넘지 않는다.
출력
각 테스트 케이스마다 둘레 길이 합의 최댓값을 한 줄에 출력한다. 유효한 분할이 없으면 "0"(따옴표 제외)을 출력한다. 상대 오차 또는 절대 오차가 미만이면 정답으로 인정한다.
힌트
그림은 첫 번째 예시 입력에 대해 유효한 분할(왼쪽)과 유효하지 않은 분할(오른쪽)을 보여준다.
