아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

최소 둘레 삼각형

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

요약
점이 최대 10000개 주어질 때, 일직선 위에 놓인 경우도 포함해 세 점이 이루는 삼각형 둘레의 최솟값을 구한다.
난이도

어려움10점 중 8점

유형
기하, 분할 정복, 정렬
정답자
아직 제출이 없습니다

문제

정수 좌표를 가진 점 집합이 주어진다. 이 집합에서 서로 다른 세 점을 골라 만드는 삼각형의 둘레 중 가장 작은 값을 구하라.

삼각형의 둘레는 고른 세 점 사이의 거리 세 개를 모두 더한 값이다. 세 점이 한 직선 위에 놓여 면적이 0이 되는 경우도 삼각형으로 센다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 점의 개수 nn이 주어진다. 다음 nn개의 줄에는 ii번째 점의 좌표를 나타내는 두 정수 xix_i, yiy_i가 공백으로 구분되어 주어진다. 같은 좌표에 점이 두 개 이상 있는 경우는 없다.

제한

  • 1≤T≤151 \le T \le 15
  • 0≤xi,yi≤1090 \le x_i, y_i \le 10^9
  • 3≤n≤100003 \le n \le 10000

출력

각 테스트 케이스마다 다음 형식으로 한 줄씩 출력한다.

Case #X: Y

XX는 테스트 케이스 번호이고 1부터 센다. YY는 최소 둘레를 소수점 아래 여섯째 자리까지 반올림한 값이다. 소수점 아래 여섯 자리는 값이 0이어도 모두 적는다.

예제3

  1. 예제 1

    입력
    1
    10
    0 0
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6
    7 7
    8 8
    9 9
    
    예상 출력
    Case #1: 5.656854
    
  2. 예제 2

    입력
    1
    3
    0 0
    1 0
    0 1
    
    예상 출력
    Case #1: 3.414214
    
  3. 예제 3

    입력
    3
    3
    0 0
    5 0
    9 0
    4
    0 0
    0 1
    1 0
    1 1
    6
    0 0
    10 0
    20 1
    3 7
    4 8
    5 9
    
    예상 출력
    Case #1: 18.000000
    Case #2: 3.414214
    Case #3: 5.656854