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

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

복잡한 종이접기

시간 제한1초메모리 제한256 MB

요약
볼록 다각형을 꼭짓점끼리 맞닿도록 한 번 접었을 때 꼭짓점이 가장 많은 결과의 둘레를 구합니다.
난이도

어려움10점 중 8점

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

문제

G 박사는 종이접기를 연구하고, 도형의 아름다움을 복잡도로 잰다. 도형의 복잡도는 꼭짓점의 개수다. 꼭짓점 개수가 같으면 둘레가 더 긴 쪽이 더 복잡하다.

여기서 다루는 종이는 모두 볼록다각형이고, 정확히 한 번만 접는다. 접을 때는 종이의 한 꼭짓점이 다른 꼭짓점 위에 정확히 놓여야 한다. 서로 다른 두 꼭짓점 AA와 BB를 고르면, 접는 선은 선분 ABAB의 수직이등분선이고 이 선이 종이를 두 부분으로 나눈다. AA가 들어 있는 부분을 접는 선에 대해 대칭이동해 나머지 부분 위에 포갠다. 접은 뒤의 도형은 그대로 남은 부분과 대칭이동한 부분의 합집합이다. 반대로 BB가 들어 있는 쪽을 접으면 그 도형의 거울상이 나오므로 꼭짓점 개수와 둘레는 같다.

주어진 볼록다각형마다 한 번 접어서 만들 수 있는 가장 복잡한 다각형의 둘레를 출력하는 프로그램을 작성하라.

예제 입력의 첫 번째 데이터는 그림 1의 왼쪽에 있는 직사각형이다. 이 직사각형을 접으면 그림 1-a부터 1-c까지 실선으로 그린 세 가지 다각형이 나온다. 이 데이터의 답은 그림 1-a에 있는 오각형의 둘레다. 그림 1-b의 직사각형이 둘레는 더 길지만 꼭짓점 개수가 먼저다.

주어진 다각형(a)(b)(c)

그림 1: 예제 입력의 첫 번째 데이터

두 번째 데이터는 그림 2의 왼쪽에 있는 삼각형이다. 어느 두 꼭짓점을 고르더라도 그림 2-a부터 2-c까지처럼 사각형이 나온다. 이 중에서 둘레가 가장 긴 것이 답이고, 그림 2-a의 사각형이 여기에 해당한다.

주어진 다각형(a)(b)(c)

그림 2: 예제 입력의 두 번째 데이터

처음에는 볼록다각형이지만 접으면 오목다각형이 나오기도 한다. 그림 3의 왼쪽은 세 번째 데이터의 다각형이다. 이 다각형을 접으면 그림 3의 오른쪽에 있는 오목한 육각형을 얻을 수 있고, 이 도형의 꼭짓점 개수가 가장 많다.

주어진 다각형접은 도형

그림 3: 예제 입력의 세 번째 데이터

그림 4의 왼쪽은 다섯 번째 데이터의 다각형이다. 그림 4-b의 다각형이 그림 4-a의 다각형보다 둘레가 길지만 사각형이므로, 답은 그림 4-a에 있는 오각형의 둘레다.

주어진 다각형(a)(b)

그림 4: 예제 입력의 다섯 번째 데이터

입력

입력은 여러 개의 데이터로 이루어지고, 각 데이터의 형식은 다음과 같다.

n
x1 y1
...
xn yn

nn은 주어진 다각형의 꼭짓점 개수이며 3≤n≤203 \le n \le 20을 만족한다. (xi,yi)(x_i, y_i)는 ii번째 꼭짓점의 좌표다. xix_i와 yiy_i는 0≤xi,yi<10000 \le x_i, y_i < 1000인 정수다. 꼭짓점 (x1,y1),…,(xn,yn)(x_1, y_1), \dots, (x_n, y_n)은 yy축이 위를 향하는 xyxy평면에서 반시계 방향으로 주어진다. 주어지는 다각형은 모두 볼록다각형이다.

주어진 다각형을 접어서 얻을 수 있는 모든 다각형은 다음 두 조건을 만족한다.

  • 두 꼭짓점 사이의 거리는 0.000010.00001 이상이다.
  • 연속한 세 꼭짓점 PP, QQ, RR에 대해, 점 QQ와 두 점 PP, RR을 지나는 직선 사이의 거리는 0.000010.00001 이상이다.

입력의 끝은 00 하나만 있는 줄로 표시한다.

출력

각 데이터마다 주어진 다각형을 한 번 접어서 얻는 가장 복잡한 다각형의 둘레를 한 줄에 하나씩 출력한다. 소수점 아래 여섯 자리까지 출력하고, 다른 문자는 출력하지 않는다. 테스트 데이터의 모든 답은 반올림 경계에서 충분히 떨어져 있어 여섯째 자리가 하나로 정해진다.

예제1

  1. 예제 1

    입력
    4
    0 0
    10 0
    10 5
    0 5
    3
    5 0
    17 3
    7 10
    4
    0 5
    5 0
    10 0
    7 8
    4
    0 0
    40 0
    50 5
    0 5
    4
    0 0
    10 0
    20 5
    10 5
    7
    4 0
    20 0
    24 1
    22 10
    2 10
    0 6
    0 4
    18
    728 997
    117 996
    14 988
    1 908
    0 428
    2 98
    6 54
    30 28
    106 2
    746 1
    979 17
    997 25
    998 185
    999 573
    999 938
    995 973
    970 993
    910 995
    6
    0 40
    0 30
    10 0
    20 0
    40 70
    30 70
    0
    
    예상 출력
    23.090170
    28.528295
    23.553450
    97.135255
    34.270510
    57.124116
    3327.900180
    142.111776