높은 빌딩을 한 번에 뛰어넘기
시간 제한1초메모리 제한128 MB
너비와 높이가 주어진 건물들의 스카이라인에서 모든 건물을 넘어가는, 지면에서 지면으로 이어지는 가장 낮은 포물선 궤적을 찾아 최고 높이를 소수 둘째 자리까지 반올림해 출력한다.
문제
새다! 비행기다! 우리 쪽으로 날아온다!
가끔은 그렇게 보이지만, 슈퍼맨은 (비행기 없이는) 날 수 없다. 대신 그는 초인적인 도약으로, 특히 높은 빌딩 위를 뛰어넘는다. 언제 범인을 쫓아야 할지 알 수 없으므로 비행 경로를 미리 신고할 수 없고, 비행기와 부딪히지 않기 위해 매번의 도약을 가능한 한 지면에 가깝게 유지하려 한다.
도약은 지면에서 시작해 지면에서 끝나므로, 슈퍼맨의 궤적은 도약의 중점을 기준으로 좌우 대칭인 포물선이 된다. 아래 방향의 중력 가속도 와 초기 수직 속도 아래에서 초 뒤의 높이는 이다. 도시의 스카이라인이 주어질 때, 모든 빌딩을 넘으면서 도달하는 최고 고도(도약 중 슈퍼맨이 올라가는 최대 높이)를 가장 작게 만들 수 있는 값을 구하라.
입력
입력은 하나 이상의 스카이라인으로 이루어지며, 각 스카이라인은 다음 형식으로 주어진다.
n
0 d1
h2 d2
...
h(n-1) d(n-1)
0 dn
도약은 지면에서 시작해 지면에서 끝나며, 가로 방향으로 총 미터를 이동한다. 번째 구간의 너비는 이고, 첫 번째와 마지막 구간은 높이 의 빈 지면이며, 그 사이의 각 구간 는 슈퍼맨이 그 너비 전체에 걸쳐 넘어야 하는 높이 의 빌딩이다. 높이와 너비는 정수가 아닐 수 있다. 은 최대 이다. 입력이 끝날 때까지 스카이라인을 반복해서 처리한다.
출력
각 스카이라인에 대해, 모든 빌딩을 넘으면서 도달할 수 있는 최고 고도의 최솟값(넘기 위해 필요한 최대 높이의 최솟값)을 소수점 아래 둘째 자리까지 반올림하여 한 줄에 출력한다.
힌트
