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

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

연결된 기브(Connected Gheeves)

시간 제한1초메모리 제한128 MB

요약
아래가 연결된 두 개의 볼록한 깔때기 모양 용기에 주어진 넓이만큼 물을 부었을 때, 더 낮은 테두리를 넘지 않는 최종 수위를 구한다.
난이도

어려움10점 중 8점

유형
기하, 이분 탐색, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

기브(gheef, 복수형 gheeves)는 깔때기 모양의 2차원 그릇입니다. 기브는 다음 조건을 만족하는 점들의 수열 (p1,p2,…,pn)(p_1, p_2, \dots, p_n) 으로 정의됩니다.

  • 3≤n≤10003 \le n \le 1000
  • pi=(xi,yi)p_i = (x_i, y_i) 라 할 때, y1>y2>⋯>ycy_1 > y_2 > \dots > y_c 이고 yc<yc+1<⋯<yny_c < y_{c+1} < \dots < y_n 을 만족하는 인덱스 1<c<n1 < c < n 이 존재합니다. 즉 yy 좌표는 꼭짓점 pcp_c 까지 강하게 감소하다가 그 뒤로 강하게 증가합니다. 이 pcp_c 를 기브의 첨점(cusp) 이라 합니다.
  • 모든 1≤i<c1 \le i < c 에 대해 xi<xcx_i < x_c 이고, 모든 c<i≤nc < i \le n 에 대해 xi>xcx_i > x_c 입니다. 즉 왼쪽 벽은 첨점의 왼쪽에, 오른쪽 벽은 오른쪽에 놓입니다.
  • 벽은 바깥쪽으로 볼록합니다. (1<i<c1 < i < c 또는 c<i<nc < i < n 인 각 꼭짓점 pip_i 에서 pi−1p_{i-1} 을 pip_i 를 중심으로 시계 방향으로 회전시켜 pipi+1p_i p_{i+1} 과 일직선이 되게 하려면 180°180° 보다 큰 회전이 필요합니다.) 또한 이웃한 점들을 잇는 선분들은 공유하는 끝점에서만 만나며, 몸통은 자기 자신과 교차하지 않습니다.

점들을 잇는 선분들의 열 (p1p2,p2p3,…,pn−1pn)(p_1p_2, p_2p_3, \dots, p_{n-1}p_n) 을 기브의 몸통 이라 합니다. 아래 그림은 c=4c = 4 인 여섯 점짜리 기브의 예입니다.

두 기브 P=(p1,…,pn)P = (p_1, \dots, p_n) 과 Q=(q1,…,qm)Q = (q_1, \dots, q_m) 이 주어집니다. PP 의 모든 xx 좌표는 음의 정수, QQ 의 모든 xx 좌표는 양의 정수이므로 PP 는 yy 축 왼쪽에, QQ 는 오른쪽에 놓입니다. 두 첨점은 부피가 없는 가느다란 관으로 이어져 있어 두 기브는 연통관처럼 동작합니다. 즉 물은 항상 두 기브에서 같은 높이를 유지합니다.

이 계에 일정량의 물을 붓습니다. 문제가 2차원이므로 물의 양은 물이 차지하는 단면적으로 측정합니다. 물은 아래에서 위로 차오릅니다. PP 에서 수위가 min⁡(y1,yn)\min(y_1, y_n)(두 테두리 중 낮은 쪽)에 도달하면 물이 PP 밖으로 넘쳐 흐르고, QQ 도 마찬가지입니다. 따라서 수위는 두 테두리 중 더 낮은 높이를 결코 넘지 못합니다. 주어진 양의 물을 모두 부은 뒤 최종 수위를 구하세요.

입력

첫 줄에 테스트 케이스의 수 tt 가 주어집니다. 각 테스트 케이스는 세 줄로 이루어집니다.

  • 첫 줄: 계에 붓는 물의 양을 나타내는 정수 aa (1≤a≤1000001 \le a \le 100000). 넓이로 측정합니다.
  • 둘째 줄: 기브 PP 의 정보. 점의 개수 kk 뒤에 kk 개의 좌표쌍 x1 y1 x2 y2 … xk ykx_1\ y_1\ x_2\ y_2\ \dots\ x_k\ y_k 가 옵니다.
  • 셋째 줄: 같은 형식으로 기브 QQ 의 정보.

모든 좌표는 정수입니다. PP 의 xx 좌표는 모두 음수, QQ 의 xx 좌표는 모두 양수입니다.

출력

각 테스트 케이스마다 최종 수위 LL 을 한 줄에 출력합니다. 이 yy 좌표 값을 소수점 아래 정확히 셋째 자리까지 반올림하여 출력합니다 (예: -15.000, 3.536). 부은 물의 양이 낮은 테두리까지의 수용 용량 이상이면 수위는 그 테두리 높이와 같습니다.

예제2

  1. 예제 1

    입력
    2
    25
    3 -30 10 -20 0 -10 10
    3 10 10 20 0 30 10
    25
    3 -30 -10 -20 -20 -10 -10
    3 10 10 20 0 30 10
    
    예상 출력
    3.536
    -15.000
    
  2. 예제 2

    입력
    1
    50
    3 -30 10 -20 0 -10 10
    3 10 10 20 0 30 10
    
    예상 출력
    5.000