만드는 중입니다

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

기름이 떨어진 언덕길 (큰 입력)

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

요약
중력으로 내려가는 차를 브레이크로 조절해 앞차를 추월하지 않고 목표 지점까지 최단 시간에 도달합니다.
난이도

보통10점 중 7점

유형
그리디, 수학, 시뮬레이션
정답자
아직 제출이 없습니다

문제

언덕 꼭대기에서 차의 기름이 떨어졌다. 집은 언덕 아래에 있으니 최대한 빨리 내려가고 싶다. 문제는 바로 앞에 다른 차가 한 대 있어서 그 차를 앞지를 수 없다는 것이다. 다행히 브레이크는 아주 잘 듣는다.

시각 00초에 언덕 꼭대기에서 속력 0 m/s0\ \text{m/s}로 출발한다. 중력은 언덕을 따라 내려가는 방향으로 일정한 가속도를 준다. 어느 순간에나 브레이크를 밟아 속력을 줄이거나, 그 순간의 가속도를 원하는 만큼 줄일 수 있다.

브레이크를 가장 잘 썼을 때 집까지 걸리는 최소 시간을 구하라.

제약

  • 1≤T≤201 \le T \le 20
  • 1.0≤D≤1041.0 \le D \le 10^4
  • 1≤N≤20001 \le N \le 2000
  • 1≤A≤2501 \le A \le 250
  • 1.00≤ai≤9.811.00 \le a_i \le 9.81
  • 0.0≤ti≤1050.0 \le t_i \le 10^5, t0=0t_0 = 0, ti<ti+1t_i < t_{i+1}
  • 0.0≤xi≤1050.0 \le x_i \le 10^5, xi<xi+1x_i < x_{i+1}
  • xN−1≥Dx_{N-1} \ge D

입력

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

각 테스트 케이스의 첫 줄에는 실수 DD와 정수 NN, AA가 공백으로 구분되어 주어진다. DD는 언덕을 따라 집까지 내려가야 하는 거리이고 단위는 미터이며, 소수점 아래 여섯 자리까지 주어진다.

다음 NN개의 줄에는 각각 실수 tit_i(초)와 xix_i(미터)가 공백으로 구분되어 주어진다. tit_i와 xix_i도 소수점 아래 여섯 자리까지 주어진다.

그다음 줄에는 실수 aia_i가 AA개, 공백으로 구분되어 주어진다. 단위는 m/s2\text{m/s}^2이고 소수점 아래 두 자리까지 주어진다.

앞차의 위치는 (ti,xi)(t_i, x_i) 쌍으로 정해진다. 시각 tit_i초에 앞차는 언덕 꼭대기, 즉 내 출발 지점에서 xix_i미터 아래에 있다. 앞차는 시각 tit_i와 ti+1t_{i+1} 사이를 일정한 속력으로 움직인다. 시각과 위치는 모두 증가하는 순서로 주어지고 t0=0t_0 = 0이다.

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

출력

각 테스트 케이스마다 먼저 Case #c:를 출력한다. cc는 11부터 시작하는 테스트 케이스 번호다.

이어서 AA개의 줄을 출력한다. ii번째 줄에는 중력에 의한 가속도가 aia_i일 때 브레이크를 가장 잘 써서 집에 도착하는 최소 시간을 초 단위로 출력한다. 각 값은 소수점 아래 여섯 자리로 반올림해 정확히 여섯 자리를 출력한다. 출력에 빈 줄은 없다.

노트

위치와 가속도. 일정한 가속도 a m/s2a\ \text{m/s}^2와 초기 속력 v0 m/sv_0\ \text{m/s}로 움직이는 물체는 tt초 동안 v0t+12at2v_0 t + \frac{1}{2} a t^2만큼 이동한다.

경사면 위의 거리. 모든 거리와 가속도는 언덕을 따라 내려가는 직선 방향으로 잰다. 수평 방향 거리가 아니다. 초기 속력이 0 m/s0\ \text{m/s}이고 가속도가 2 m/s22\ \text{m/s}^2인데 앞차가 x=1x = 1에 멈춰 있다면, 앞차에 닿기까지 정확히 11초가 걸린다.

앞차. 앞차를 절대 앞지를 수 없다. 즉 어느 시각에도 내가 내려온 거리가 앞차가 내려온 거리보다 클 수 없다. 두 거리가 같은 것은 괜찮다. 두 차는 모두 질점으로 본다.

마지막 점 이후. 앞차는 뒤로 가지 않고 xN−1≥Dx_{N-1} \ge D이므로, 시각 tN−1t_{N-1} 이후의 앞차 위치는 나를 막지 않는다.

예제2

  1. 예제 1

    입력
    3
    1000.000000 2 3
    0.000000 20.500000
    25.000000 1000.000000
    1.00 5.00 9.81
    50.000000 2 2
    0.000000 0.000000
    100000.000000 100.000000
    1.00 1.01
    10000.000000 3 1
    0.000000 0.000000
    10000.000000 0.100000
    10000.100000 100000.000000
    1.00
    
    예상 출력
    Case #1:
    44.721360
    25.000000
    25.000000
    Case #2:
    50000.000000
    50000.000000
    Case #3:
    10140.974143
  2. 예제 2

    입력
    2
    10.000000 3 2
    0.000000 3.000000
    4.000000 4.000000
    5.000000 40.000000
    1.00 9.81
    100.000000 2 2
    0.000000 500.000000
    1.000000 600.000000
    2.50 9.81
    
    예상 출력
    Case #1:
    5.643709
    4.524796
    Case #2:
    8.944272
    4.515236