만드는 중입니다

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

신호등

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

요약
두 일방통행 도로가 만나는 교차로에서 신호 주기 x를 녹색 g와 적색 r로 나눌 때, 교차로에 동시에 서 있는 차의 최대 수를 가장 적게 하는 g와 r을 구합니다.
난이도

어려움10점 중 8점

유형
이분 탐색, 정렬, 시뮬레이션
정답자
아직 제출이 없습니다

문제

도시에는 큰 문제가 하나 있습니다. 바로 교통 체증입니다. 같은 도로에 차가 한꺼번에 너무 많이 들어가려 하면 체증이 생깁니다. 체증의 주된 원인은 교차로이며, 가장 큰 체증도 교차로에서 생깁니다.

어느 도시에서 일방통행 도로 두 개가 교차하는 교차로에 신호등을 설치하기로 했습니다.

신호등은 매 순간 첫 번째 도로의 차에 초록불이거나, 두 번째 도로의 차에 초록불이거나, 두 상태 사이를 바꾸는 중입니다. 교통 규칙에 따르면 신호가 바뀌는 순간에는 어느 도로의 차든 지나갈 수 있습니다.

신호등은 다음과 같이 동작합니다. 시각 00에 첫 번째 도로는 초록불, 두 번째 도로는 빨간불이 됩니다. gg초가 지나면 첫 번째 도로는 빨간불, 두 번째 도로는 초록불로 바뀝니다. 그 뒤 rr초가 지나면 다시 첫 번째 도로가 초록불이 되고, 이 과정이 반복됩니다.

따라서 첫 번째 도로는 정수 kk에 대해 (k(r+g),k(r+g)+g)\left(k(r+g), k(r+g)+g\right) 시각에 초록불이고, 두 번째 도로는 (k(r+g)+g,(k+1)(r+g))\left(k(r+g)+g, (k+1)(r+g)\right) 시각에 초록불입니다. 신호는 k(r+g)k(r+g)와 k(r+g)+gk(r+g)+g 시각에 바뀝니다. 한쪽 도로가 초록불일 때는 그 도로의 차만 지나갈 수 있습니다. 신호가 바뀌는 순간에는 두 도로의 차가 모두 지나갈 수 있습니다. 차가 지나간 시각과 신호가 바뀐 시각의 차이가 10−510^{-5} 이하이면, 그 차는 신호가 바뀔 때 지나간 것으로 봅니다.

기술 문서에 따라 주기는 xx로 고정되어 있어야 하며, 즉 r+g=xr+g=x여야 합니다. 이 조건만 지키면 rr과 gg는 음이 아닌 실수 중 아무 값이나 고를 수 있습니다.

좋은 값을 고르기 위해 두 도로의 교통량을 조사했고, 다음 자료를 얻었습니다.

각 도로에는 교차로를 향해 달리는 차가 여러 대 있습니다. 차는 서로 추월하지 않습니다. 뒤따르던 차가 더 느린 차를 따라잡으면 속도를 줄이고, 그 차와 같은 속도로 뒤를 따릅니다. 차의 크기와 속도를 바꾸는 데 걸리는 시간은 무시합니다. 차가 교차로에 도착했을 때 초록불이거나 신호가 바뀌는 중이면 즉시 통과합니다. 그렇지 않으면 멈춰서 초록불을 기다립니다.

시각 00에 첫 번째 도로에는 nn대의 차가 있습니다. ii번째 차는 교차로에서 aia_i미터 떨어져 있고, 교차로 쪽으로 viv_i m/s의 속도로 움직입니다.

마찬가지로 두 번째 도로에는 mm대의 차가 있습니다. ii번째 차는 교차로에서 bib_i미터 떨어져 있고, 교차로 쪽으로 wiw_i m/s의 속도로 움직입니다.

체증을 줄이려면, 교차로에 동시에 서 있는 차의 최대 대수가 가능한 한 적도록 gg와 rr을 골라야 합니다.

교통 관리국이 최적의 gg와 rr을 고르도록 도와주세요.

입력

첫 줄에 실수 xx(1≤x≤1041 \le x \le 10^4)가 주어집니다. 소수점 아래는 최대 세 자리입니다.

둘째 줄에는 첫 번째 도로의 차 수 nn(0≤n≤1050 \le n \le 10^5)이 주어집니다. 이어서 nn개의 줄에 각 차의 aia_i, viv_i(1≤ai,vi≤1041 \le a_i, v_i \le 10^4)가 주어집니다. 차가 교차로에서 떨어진 거리와 속도입니다.

다음 줄에는 두 번째 도로의 차 수 mm(0≤m≤1050 \le m \le 10^5, 1≤n+m≤1051 \le n+m \le 10^5)이 주어집니다. 이어서 mm개의 줄에 각 차의 bib_i, wiw_i(1≤bi,wi≤1041 \le b_i, w_i \le 10^4)가 주어집니다.

모든 aia_i, viv_i, bib_i, wiw_i는 소수점 아래 세 자리 이하입니다. 처음부터 같은 위치에 있는 차는 없습니다. 두 목록 모두 신호등까지의 거리가 가까운 순서로 주어집니다.

출력

첫 줄에는 gg와 rr을 어떻게 고르든 교차로에 동시에 kk대를 넘는 차가 서 있지 않도록 할 수 있는 최소 kk를 출력합니다.

둘째 줄에는 이 목표를 이루는 gg와 rr을 출력합니다. 소수점 아래 자리는 가능한 한 많이 출력합니다. 최적해가 여러 개라면 그중 아무것이나 출력해도 됩니다.

힌트

첫 번째 예제에서는 모든 차가 시각 11에 교차로에 도착합니다. 신호를 정확히 그 시각에 바꾸면 모든 차가 기다리지 않고 지나갑니다.

두 번째 예제에서 첫 번째 도로의 상황은 다음과 같이 전개됩니다. 시각 1/151/15에 세 번째 차가 두 번째 차를 따라잡아 속도를 5 m/s로 줄입니다. 그 다음 두 차가 시각 0.50.5에 첫 번째 차를 따라잡고, 둘 다 속도를 1 m/s로 줄입니다. 세 차는 함께 달려 출발 2초 뒤에 교차로에 도착합니다.

두 번째 도로의 차들은 같은 속도로 달리며, 출발 1초, 5초, 7초 뒤에 교차로에 도착합니다. gg와 rr을 어떻게 골라도 적어도 한 대는 기다려야 합니다. 가장 좋은 선택은 gg를 2 이상 3 이하로 고르는 것입니다. 이때 두 번째 도로의 첫 번째와 두 번째 차가 기다리지만, 교차로에 동시에 있는 차는 최대 한 대입니다. g<2g < 2이면 첫 번째 도로의 세 대가 모두 기다리고, g>3g > 3이면 두 번째 도로의 두 번째와 세 번째 차가 교차로에서 동시에 기다리게 됩니다.

예제2

  1. 예제 1

    입력
    2.0
    1
    1.0 1.0
    2
    1.0 1.0
    2.0 2.0
    
    예상 출력
    0
    1.00000 1.00000
    
  2. 예제 2

    입력
    4.0
    3
    2.0 1.0
    4.0 5.0
    5.0 20.0
    3
    1.0 1.0
    5.0 1.0
    7.0 1.0
    
    예상 출력
    1
    2.00000 2.00000