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

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

트랙 한 바퀴

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

요약
안쪽 다각형을 한 바퀴 감으면서 두 다각형 사이 영역 안에 머무는 가장 짧은 닫힌 경로 길이를 구합니다.
난이도

어려움10점 중 8점

유형
기하, 최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

서로 다른 경주 트랙의 길이를 비교하려고 한다. 트랙은 높낮이가 없는 평면 도형이고, 단순 다각형 두 개로 정의한다. 한 다각형은 다른 다각형 안에 완전히 들어 있고, 트랙은 두 다각형 사이의 영역이다. 두 다각형의 경계선도 트랙에 포함된다.

트랙의 길이는 한 바퀴를 완주하는 데 필요한 최소 이동 거리다. 즉 트랙을 벗어나지 않으면서 안쪽 다각형을 한 번 감는 닫힌 경로 중 가장 짧은 것의 길이다. 이 경로는 트랙의 경계선을 그대로 따라갈 수 있고, 모서리에서 아무리 급하게 방향을 바꾸어도 된다.

입력

입력은 다음과 같이 주어진다.

  • 첫째 줄에 안쪽 다각형의 꼭짓점 개수 nn이 주어진다. (3≤n≤503 \le n \le 50)
  • 다음 nn개 줄의 ii번째 줄에 안쪽 다각형의 ii번째 꼭짓점 좌표 xix_i와 yiy_i가 주어진다. (−5000≤xi,yi≤5000-5000 \le x_i, y_i \le 5000)
  • 다음 줄에 바깥쪽 다각형의 꼭짓점 개수 mm이 주어진다. (3≤m≤503 \le m \le 50)
  • 다음 mm개 줄의 ii번째 줄에 바깥쪽 다각형의 ii번째 꼭짓점 좌표 xix_i와 yiy_i가 주어진다. (−5000≤xi,yi≤5000-5000 \le x_i, y_i \le 5000)

모든 좌표는 정수다. 두 다각형의 꼭짓점은 반시계 방향으로 주어지고, 두 다각형의 경계선은 서로 교차하지도 닿지도 않는다.

출력

트랙의 길이를 소수점 아래 여섯째 자리까지 반올림해 한 줄에 출력한다. 길이가 정수여도 소수점 아래 여섯 자리를 모두 출력한다.

예제3

  1. 예제 1

    입력
    3
    1 1
    2 1
    1 2
    3
    0 0
    4 0
    0 4
    
    예상 출력
    3.414214
    
  2. 예제 2

    입력
    5
    1 1
    5 1
    5 5
    3 3
    1 5
    4
    0 0
    6 0
    6 6
    0 6
    
    예상 출력
    16.000000
    
  3. 예제 3

    입력
    5
    1 1
    5 1
    5 5
    3 3
    1 5
    5
    0 0
    6 0
    6 6
    3 4
    0 6
    
    예상 출력
    16.472136