방 밝히기

직교 다각형 방과 램프가 주어질 때, 벽에서 한 번만 반사되는 빛을 추적해 빛을 받지 못한 벽 길이의 합을 구한다.

어려움8기하시뮬레이션아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

벽이 xx축이나 yy축에 평행한 다각형 모양의 방 도면이 주어진다. 벽은 특수한 재질이라 거울처럼 빛을 반사하지만, 반사는 한 번만 일어난다. 이미 다른 지점에서 반사된 빛은 더 이상 반사하지 않는다.

방마다 램프가 하나씩 놓여 있다. 램프에서 나온 빛은 모든 방향으로 곧게 뻗어 나간다. 빛이 벽에 처음 닿으면 그 지점이 밝아지고, 입사각과 반사각이 같도록 반사된다. 반사된 빛은 다시 벽에 닿으면 그 지점을 밝히고 거기서 멈춘다.

반사가 한 번뿐이므로 빛이 전혀 닿지 않는 벽면이 남을 수 있다. 밝아지지 않은 벽면의 총 길이를 구하는 프로그램을 작성하라.

그림은 예제 입력의 두 번째 방이다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 모서리의 개수를 나타내는 짝수 NN (4N204 \le N \le 20)이 주어진다. 이어지는 NN개의 줄은 모서리를 반시계 방향으로 나열하며, ii번째 줄에는 ii번째 모서리의 좌표 xix_iyiy_i가 주어진다. 케이스의 마지막 줄에는 램프의 좌표 xx'yy'가 주어진다.

입력은 다음 조건을 만족한다.

  • 모든 좌표는 절댓값이 100100 이하인 정수이다.
  • 서로 다른 두 벽은 공유하는 끝점에서만 만나고, 그 밖에서는 닿지도 교차하지도 않는다.
  • 모든 모서리에서 벽은 직각으로 꺾인다.
  • 램프는 방 안쪽에 있으며 어떤 벽 위에도 놓이지 않는다.
  • 램프의 xx좌표는 어떤 벽의 xx좌표와도 같지 않고, yy좌표도 어떤 벽의 yy좌표와 같지 않다.

입력의 마지막 줄에는 00 하나만 주어진다.

출력

각 테스트 케이스마다 밝아지지 않은 벽면의 총 길이를 한 줄에 출력한다. 소수점 아래 셋째 자리에서 반올림하여 소수점 아래 자릿수가 정확히 세 자리가 되도록 출력한다.