연료가 바닥난 차

앞차의 시각별 위치가 주어질 때 브레이크로 속도를 조절하며 추월하지 않고 거리 D에 최단 시간으로 도착합니다.

보통7그리디수학시뮬레이션아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

차의 연료가 떨어졌다. 최대한 빨리 집에 도착해야 한다. 다행히 집은 언덕 아래에 있고 당신의 차는 언덕 꼭대기에 있다. 문제는 바로 앞에 다른 차가 한 대 있어서 추월할 수 없다는 점이다. 대신 브레이크는 멀쩡하고 제동력이 아주 강하다.

시각 0초에 언덕 꼭대기에서 속도 0 m/s로 출발한다. 중력은 일정한 가속도로 차를 언덕 아래로 끌어내린다. 어느 시각에나 브레이크를 밟아 속도를 원하는 만큼 줄이거나 가속도를 잠시 원하는 만큼 줄일 수 있다.

브레이크를 가장 잘 사용했을 때 집에 도착하는 최소 시간을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 세 수 DD, NN, AA가 공백으로 구분되어 주어진다. DD는 언덕 꼭대기에서 집까지의 거리를 미터로 나타낸 실수이고 소수점 아래 6자리로 주어진다. NNAA는 정수이다.

다음 NN개의 줄에는 두 실수 tit_ixix_i가 공백으로 구분되어 주어진다. tit_i는 초 단위 시각, xix_i는 미터 단위 위치이며 둘 다 소수점 아래 6자리로 주어진다. 시각 tit_i에 앞차가 당신의 출발 지점에서 언덕 아래로 xix_i미터 떨어진 곳에 있다는 뜻이다.

마지막 줄에는 AA개의 실수 aia_i가 공백으로 구분되어 주어진다. 각각 m/s2\mathrm{m/s^2} 단위의 가속도이고 소수점 아래 2자리로 주어진다.

앞차는 시각 tit_iti+1t_{i+1} 사이를 일정한 속도로 이동한다. 시각 tN1t_{N-1} 이후로는 언덕 위로 되돌아오지 않으므로 앞차의 위치는 계속 xN1x_{N-1} 이상이다.

예를 들어 t5=10t_5 = 10, x5=20x_5 = 20, t6=20t_6 = 20, x6=40x_6 = 40이면 출발 10초 뒤에 앞차는 20미터 아래에 있고, 15초 뒤에는 30미터 아래에, 20초 뒤에는 40미터 아래에 있다.

제한

  • 1T201 \le T \le 20
  • 1.0D1041.0 \le D \le 10^4
  • 1N10001 \le N \le 1000
  • 1A101 \le A \le 10
  • 1.00ai9.811.00 \le a_i \le 9.81
  • 0.0ti1050.0 \le t_i \le 10^5
  • 0.0xi1050.0 \le x_i \le 10^5
  • t0=0t_0 = 0, ti<ti+1t_i < t_{i+1}
  • xi<xi+1x_i < x_{i+1}
  • xN1Dx_{N-1} \ge D

출력

각 테스트 케이스마다 먼저 Case #c: 형식의 줄을 출력한다. cc는 1부터 시작하는 테스트 케이스 번호이다. 그 다음 AA개의 줄을 출력하며, ii번째 줄에는 중력 가속도가 aia_i일 때 집에 도착하는 최소 시간을 초 단위로 쓴다.

시간은 소수점 아래 일곱째 자리에서 반올림해 소수점 아래 정확히 6자리로 출력한다. 예를 들어 25초는 25.000000으로 쓴다. 빈 줄은 출력하지 않는다.

힌트

위치와 가속도. 가속도가 a m/s2a\ \mathrm{m/s^2}로 일정하고 처음 속도가 v0 m/sv_0\ \mathrm{m/s}인 물체는 tt초 동안 v0t+12at2v_0 t + \frac{1}{2} a t^2만큼 이동한다.

경사면 위의 거리. 모든 거리와 가속도는 언덕을 따라 내려가는 직선 방향으로 잰다. 수평 거리가 아니다. 처음 속도가 0 m/s0\ \mathrm{m/s}인 차가 2 m/s22\ \mathrm{m/s^2}로 가속하고 앞차가 x=1x = 1에 멈춰 있다면 정확히 1초 뒤에 앞차에 닿는다.

앞차. 앞차를 절대 추월할 수 없다. 어느 시각에도 당신이 내려온 거리가 앞차가 내려온 거리보다 클 수 없다. 두 거리가 같아도 된다. 두 차는 모두 질점으로 본다.

브레이크. 브레이크는 어느 시각에나 속도를 원하는 만큼 줄인다. 속도가 음수가 되는 일은 없다.