기름이 떨어진 언덕길 (큰 입력)
시간 제한5초메모리 제한512 MB
중력으로 내려가는 차를 브레이크로 조절해 앞차를 추월하지 않고 목표 지점까지 최단 시간에 도달합니다.
문제
언덕 꼭대기에서 차의 기름이 떨어졌다. 집은 언덕 아래에 있으니 최대한 빨리 내려가고 싶다. 문제는 바로 앞에 다른 차가 한 대 있어서 그 차를 앞지를 수 없다는 것이다. 다행히 브레이크는 아주 잘 듣는다.
시각 초에 언덕 꼭대기에서 속력 로 출발한다. 중력은 언덕을 따라 내려가는 방향으로 일정한 가속도를 준다. 어느 순간에나 브레이크를 밟아 속력을 줄이거나, 그 순간의 가속도를 원하는 만큼 줄일 수 있다.
브레이크를 가장 잘 썼을 때 집까지 걸리는 최소 시간을 구하라.
제약
- , ,
- ,
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 실수 와 정수 , 가 공백으로 구분되어 주어진다. 는 언덕을 따라 집까지 내려가야 하는 거리이고 단위는 미터이며, 소수점 아래 여섯 자리까지 주어진다.
다음 개의 줄에는 각각 실수 (초)와 (미터)가 공백으로 구분되어 주어진다. 와 도 소수점 아래 여섯 자리까지 주어진다.
그다음 줄에는 실수 가 개, 공백으로 구분되어 주어진다. 단위는 이고 소수점 아래 두 자리까지 주어진다.
앞차의 위치는 쌍으로 정해진다. 시각 초에 앞차는 언덕 꼭대기, 즉 내 출발 지점에서 미터 아래에 있다. 앞차는 시각 와 사이를 일정한 속력으로 움직인다. 시각과 위치는 모두 증가하는 순서로 주어지고 이다.
예를 들어 , , , 이면 출발 초 뒤 앞차는 미터 아래에, 초 뒤에는 미터 아래에, 초 뒤에는 미터 아래에 있다.
출력
각 테스트 케이스마다 먼저 Case #c:를 출력한다. 는 부터 시작하는 테스트 케이스 번호다.
이어서 개의 줄을 출력한다. 번째 줄에는 중력에 의한 가속도가 일 때 브레이크를 가장 잘 써서 집에 도착하는 최소 시간을 초 단위로 출력한다. 각 값은 소수점 아래 여섯 자리로 반올림해 정확히 여섯 자리를 출력한다. 출력에 빈 줄은 없다.
노트
위치와 가속도. 일정한 가속도 와 초기 속력 로 움직이는 물체는 초 동안 만큼 이동한다.
경사면 위의 거리. 모든 거리와 가속도는 언덕을 따라 내려가는 직선 방향으로 잰다. 수평 방향 거리가 아니다. 초기 속력이 이고 가속도가 인데 앞차가 에 멈춰 있다면, 앞차에 닿기까지 정확히 초가 걸린다.
앞차. 앞차를 절대 앞지를 수 없다. 즉 어느 시각에도 내가 내려온 거리가 앞차가 내려온 거리보다 클 수 없다. 두 거리가 같은 것은 괜찮다. 두 차는 모두 질점으로 본다.
마지막 점 이후. 앞차는 뒤로 가지 않고 이므로, 시각 이후의 앞차 위치는 나를 막지 않는다.