작열하는 태양 아래를 걷기
시간 제한8초메모리 제한512 MB
볼록한 건물 밑면과 태양의 방향과 고도, 도로 구간이 주어질 때, 도로를 따라 S에서 T로 가면서 건물 그림자 밖에서 걷는 거리가 최소인 경로의 길이를 구합니다.
문제
Edward R. Nelson은 오늘 어떤 일을 하러 낯선 도시에 왔다. 이 도시는 2차원 평지 위에 지어졌고, 각각 위에서 보면 볼록다각형인 수직 건물이 여러 채 있다. 즉, 건물은 볼록다각형 기둥이다. Edward는 지면의 도로를 따라 걸어 점 에서 점 로 이동해야 한다. 오늘은 태양이 작열하고 매우 더워서 그는 햇볕 아래에서 걷는 거리를 최대한 줄이고 싶어 한다.
건물, 도로, 태양의 방향 정보가 주어졌을 때, 햇볕 아래에서 걷는 거리를 최소로 하는 경로의 길이를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 데이터 세트로 이루어진다. 각 데이터 세트는 다음 형식으로 주어진다:
N M
NV1 H1 X1,1 Y1,1 X1,2 Y1,2 . . . X1,NV1 Y1,NV1
...
NVN HN XN,1 YN,1 XN,2 YN,2 . . . XN,NVN YN,NVN
RX1,1 RY1,1 RX1,2 RY1,2
...
RXM,1 RYM,1 RXM,2 RYM,2
θ φ
SX SY TX TY
모든 수는 정수이다. 은 건물의 수이고 이다. 은 도로의 수이고 이다. 는 번째 건물 밑면의 꼭짓점 수이고 이다. 는 번째 건물의 높이이다. 와 는 번째 건물 밑면의 번째 꼭짓점 좌표이다. 는 번째 도로의 두 끝점 좌표이다. 는 태양의 방향이며 축 양의 방향에서 시작해 반시계 방향으로 잰 각도이다 (). 는 태양의 고도각이다 (). 와 는 각각 점 와 점 의 좌표이다. 모든 좌표는 0 이상 1000 이하이다.
입력의 끝은 인 줄로 나타낸다. 이 줄은 처리하지 않는다.
점 와 는 모두 도로 위에 있음이 보장된다. 그림자의 한 변과 도로가 평행한 쌍은 없다. 태양은 무한히 멀리 있으며 Edward가 걷는 동안 움직이지 않는다고 가정한다.
출력
각 데이터 세트마다 Edward가 햇볕 아래에서 걸어야 하는 최소 거리를 한 줄에 출력한다. 소수점 이하 자릿수는 임의로 출력해도 된다. 다만 오차는 0.001 이하여야 한다.