점프!

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

요약
각 사람의 모자 높이는 시간에 따른 포물선이고 0에서 잘린다. 가장 높은 높이와 가장 낮은 높이의 차이가 최소가 되는 가장 이른 시각을 구한다.
난이도

보통10점 중 6점

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

문제

배를 든든히 채웠으니, 이제 친한 친구들과 졸업 사진을 찍을 차례다. 왠일인지 졸업 사진의 절반쯤은 여러 학생이 학사모를 치켜들고 동시에 공중으로 뛰어오르는 장면을 담고 있다. 공학도인 당신은 이 부분에 집착하게 된다. 치켜든 학사모의 높이가 최대한 정확히 같아지도록 사진을 찍고 싶은 것이다. 이를 위해 카메라가 완벽한 순간에 셔터를 누르도록 프로그래밍할 것이다. 그렇다면 카메라는 정확히 언제 셔터를 눌러야 할까? 카메라를 “프로그래밍”하라고 했다고? 진심이다!

사진에 나오는 각 사람에 대해 두 수가 주어진다. (1) 발에서 치켜든 학사모까지의 거리 di(단위: 미터). 이 거리는 점프하는 동안 변하지 않는다. 즉, 친구들과 당신 모두 발과 머리 위로 일정한 만큼 손을 뻗은 상태다. (2) 그 사람이 처음 점프하는 속도 vi(단위: 미터/초). 중학교 물리에서 배웠듯이, 지구 중력 때문에 속도 v로 뛰어오른 사람은 시각 t에 높이 vt−(1/2)gt2에 위치한다. 여기서 g = 9.81m/s2는 지구의 중력 상수다.5 더 정확히는 다시 땅에 닿을 때까지 이 높이를 유지하며, 높이가 0이 되는 순간 땅에 닿는 것으로 가정한다. 그 뒤로는 높이 0에 머문다. 목표는 가장 높은 손/학사모와 가장 낮은 손/학사모의 높이 차이가 최소가 되는 시각 t를 찾는 것이다.

5정확히는 그렇지 않지만, 이 근사를 사용해야 한다.

입력

첫 줄에는 파일에 들어 있는 입력 데이터 세트의 수 1 ≤ K ≤ 100이 주어진다. 그 뒤에 다음과 같은 형식의 데이터 세트 K개가 이어진다.

데이터 세트의 첫 줄에는 사진을 찍는 친구의 수 1 ≤ n ≤ 100이 주어진다. 그 뒤에 n개의 줄이 이어지며, 각 줄에는 두 개의 실수 0.0 ≤ di, vi ≤ 10.0이 주어진다.

출력

각 데이터 세트에 대해 먼저 “Data Set x:”를 한 줄에 출력한다. 여기서 x는 데이터 세트의 번호다. 그런 다음 가장 높은 학사모와 가장 낮은 학사모 사이의 거리가 최소가 되는 시각을 소수점 둘째 자리로 반올림해 출력한다. 그러한 시각이 여러 개라면 가장 이른 것을 출력한다.

각 데이터 세트 뒤에는 빈 줄을 출력한다.

예제1

  1. 예제 1

    입력
    1
    3
    6.0 0.0
    4.5 7.0
    5.5 7.0
    
    예상 출력
    Data Set 1:
    0.08