만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Ghost

시간 제한10초메모리 제한512 MB

요약
각각 일정한 속도로 움직이는 직사각형들이 주어질 때, 시간 구간 [l, r]에서 모든 직사각형이 공통으로 겹치는 최대 넓이를 구합니다.
난이도

어려움10점 중 9점

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

문제

여러분의 팀은 크라쿠프의 바벨 성에 있는 고대 방에 Ghost에 의해 갇혔습니다. Ghost는 질문에 답하기 전까지 여러분을 내보내 주지 않습니다.

벽에는 nn개의 그림이 걸려 있습니다. 벽을 표준 유클리드 평면으로 보면, 각 그림은 좌표축에 평행한 직사각형입니다. 각 그림의 정확한 크기와 시작 위치를 알고 있습니다. 시각 0에 Ghost가 그림들을 움직이기 시작하며, 각 그림은 저마다 다른 방향과 속력으로 움직입니다. 여러분은 관찰력이 뛰어나서 각 그림의 정확한 속도를 알아낼 수 있습니다.

잠시 후 Ghost가 쇼를 멈추고 까다로운 질문을 던지기 시작합니다. 각 질문은 쇼의 두 시각 ll과 rr로 주어집니다. 여러분은 ll과 rr 사이의 어떤 시각에 벽의 한 지점이 모든 그림에 동시에 덮여 있었는지 답해야 합니다. 그랬다면 ll과 rr 사이에서 모든 그림이 겹치는 넓이의 최댓값도 구해야 합니다.

이 방을 나가고 싶다면 Ghost에게 올바른 답을 주십시오.

입력

첫 줄에 테스트 케이스의 수 zz(1≤z≤40001 \le z \le 4000)가 주어집니다. 각 테스트 케이스는 다음 형식으로 주어집니다.

테스트 케이스의 첫 줄에는 그림의 수 nn(1≤n≤1000001 \le n \le 100000)이 주어집니다. 이어지는 nn개의 줄에는 여섯 개의 수 x1,y1,x2,y2,vx,vyx_1, y_1, x_2, y_2, v_x, v_y(−1000000≤x1<x2≤1000000-1000000 \le x_1 < x_2 \le 1000000, −1000000≤y1<y2≤1000000-1000000 \le y_1 < y_2 \le 1000000, −1000000≤vx,vy≤1000000-1000000 \le v_x, v_y \le 1000000)가 주어집니다. 여기서 (x1,y1)(x_1, y_1)은 그림의 왼쪽 아래 꼭짓점, (x2,y2)(x_2, y_2)는 오른쪽 위 꼭짓점, (vx,vy)(v_x, v_y)는 속도 벡터입니다. 시각 tt에 왼쪽 아래 꼭짓점은 (x1+tvx,y1+tvy)(x_1 + t v_x, y_1 + t v_y)에, 오른쪽 위 꼭짓점은 (x2+tvx,y2+tvy)(x_2 + t v_x, y_2 + t v_y)에 있습니다.

다음 줄에는 Ghost의 질문 수 qq(1≤q≤1000001 \le q \le 100000)가 주어집니다. 이어지는 qq개의 줄에는 소수점 아래 최대 4자리까지 주어지는 두 실수 ll, rr(0≤l≤r≤10000000 \le l \le r \le 1000000)이 주어지며, 이는 닫힌 구간 [l,r][l, r]을 뜻합니다.

모든 테스트 케이스를 합친 그림의 총수는 1000000을 넘지 않습니다. 모든 테스트 케이스를 합친 질문의 총수도 1000000을 넘지 않습니다.

출력

각 질문마다 구간 [l,r][l, r]에서 모든 그림의 교집합 넓이의 최댓값을 실수 하나로 한 줄에 출력합니다. 절대 오차 또는 상대 오차가 10−610^{-6} 이하이면 정답으로 인정합니다. 즉, 출력값을 aa, 정답을 bb라 할 때 ∣a−b∣/max⁡(1,b)≤10−6|a-b|/\max(1, b) \le 10^{-6}이면 정답입니다. 교집합이 비어 있으면 0을 출력합니다(±10−6\pm 10^{-6} 오차 허용).

예제1

  1. 예제 1

    입력
    2
    2
    0 0 1 1 1 1
    1 1 2 2 -1 -1
    3
    0 0
    0.25 0.25
    0 2
    3
    0 0 1 1 2 2
    0 0 1 1 1 1
    1 1 2 2 -1 -1
    1
    0 2
    
    예상 출력
    0.000000000
    0.250000000
    1.000000000
    0.444444444