관람객 기차

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

새장은 새를 기르는 큰 우리다. 동물원의 큰 새장은 지름이 수십 미터에 이르고, 그 안에서 새가 날아다니며 야생에 가까운 환경에서 지낸다. 적어도 이론상으로는 그렇다. 동물원에는 크고 볼거리가 되는 주 새장이 하나 있고, 그보다 덜 중요한 새장이 여러 개 있다.

동물원은 관람객이 한 구역에서 다른 구역으로 쉽게 옮겨 다니도록 짧은 직선 전기 기차 선로를 놓으려고 한다. 비어 있는 구역 중 어디를 지나게 할지 정해야 한다. 원장은 다른 동물원을 둘러보다가 관람객이 주요 시설을 사진으로 많이 찍을수록 더 만족한다는 사실을 알았고, 이 기준으로 계획한 선로의 품질을 재려고 한다. 선로 근처에서 가장 중요한 시설은 주 새장이다. 원장은 선로를 따라 늘어선 덜 중요한 새장이 주 새장을 가려서 관람객의 만족도가 떨어질까 걱정한다. 계획한 선로를 평가하는 일을 도와라.

모든 새장의 좌표와 계획한 선로의 시작점, 끝점이 주어진다. 선로 위에서 주 새장이 보이면서 다른 어떤 새장에도 일부조차 가려지지 않는 구간의 총 길이를 구하라. 관람객은 기차에서 어느 방향이든 내다볼 수 있다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에 새장의 개수 NN (1N1001 \le N \le 100)이 주어진다. 둘째 줄에 계획한 선로의 좌표가 x1x_1 y1y_1 x2x_2 y2y_2 형식으로 주어진다. [x1,y1][x_1, y_1]은 선로의 시작점이고 [x2,y2][x_2, y_2]는 끝점이며, 선로의 두께는 없다고 본다. 이어지는 NN개의 줄에는 새장이 한 줄에 하나씩 주어진다. 각 새장은 넓이가 0이 아닌 직사각형이고, 네 꼭짓점의 좌표가 x1x_1 y1y_1 x2x_2 y2y_2 x3x_3 y3y_3 x4x_4 y4y_4 형식으로 시계 방향 또는 반시계 방향 순서로 주어진다. 주 새장이 가장 먼저 나온다. 모든 좌표는 절댓값이 1000010000보다 작은 정수다. 어떤 새장도 선로와 교차하거나 닿지 않고, 다른 새장과도 교차하거나 닿지 않는다. 테스트 케이스 사이에 빈 줄은 없다. 입력의 마지막 줄에는 00 하나만 주어진다.

출력

각 테스트 케이스마다 주 새장이 보이면서 다른 새장에 일부조차 가려지지 않는 선로 구간의 총 길이 LL을 한 줄에 하나씩 출력한다. 소수점 아래 일곱째 자리에서 반올림하여 소수점 아래 여섯 자리까지 항상 출력한다. 그런 구간이 없으면 0.000000을 출력한다.

주 새장의 꼭짓점이나 변만 가려지는 경우, 즉 가려지는 시야의 각도 폭이 0인 경우에는 가려진 것으로 보지 않는다.