핫도그 장수의 역습 (라지)

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

요약
주어진 위치에서 출발한 상인들이 모두 초속 1로 움직일 때 모든 상인 사이 거리가 D 이상이 되는 최소 시간을 구합니다.
난이도

보통10점 중 7점

유형
이분 탐색, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

긴 거리 하나를 따라 핫도그 장수 여러 명이 서 있다. 서로 너무 가까운 곳에서 팔면 같은 손님을 나눠 갖게 되므로, 장수들은 충분히 떨어져 자리를 잡으려고 한다.

장수는 거리를 따라 초속 1미터로 움직인다. 모두 동시에 움직이며, 어느 두 사람 사이의 거리도 DD미터 이상이 되는 순간 멈춘다.

거리는 아주 길어서 어느 방향으로 가든 움직일 공간이 모자랄 일은 없다. 장수들의 처음 위치가 주어질 때, 모든 장수가 서로 DD미터 이상 떨어지는 데 필요한 최소 시간을 구하시오.

입력

거리의 각 지점에는 정수 번호가 붙어 있다. 번호가 pp인 지점은 pp가 양수이면 번호 00인 지점에서 동쪽으로 ∣p∣|p|미터, pp가 음수이면 서쪽으로 ∣p∣|p|미터 떨어진 곳이다.

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

각 테스트 케이스의 첫 줄에는 장수가 한 명 이상 서 있는 지점의 개수 CC와 장수들이 확보하려는 최소 거리 DD가 공백으로 구분되어 주어진다. 이어지는 CC개 줄에는 각각 두 정수 PP와 VV가 공백으로 구분되어 주어지며, 번호가 PP인 지점에 장수가 VV명 서 있다는 뜻이다.

제한

  • 1≤T≤501 \le T \le 50
  • 1≤C≤2001 \le C \le 200
  • 1≤D≤1061 \le D \le 10^6
  • PP는 −105-10^5 이상 10510^5 이하의 정수이다.
  • 한 테스트 케이스 안에서 PP 값은 모두 다르고, 증가하는 순서로 주어진다.
  • VV는 양의 정수이고, 한 테스트 케이스의 VV 값을 모두 더한 값은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 모든 장수가 서로 DD미터 이상 떨어지는 데 걸리는 최소 시간이다.

yy는 항상 0.50.5의 배수이므로 소수점 아래 한 자리까지 출력한다. 답이 3이면 3.0, 답이 2.5이면 2.5를 출력한다.

예제1

  1. 예제 1

    입력
    2
    3 2
    0 1
    3 2
    6 1
    2 2
    0 3
    1 1
    
    예상 출력
    Case #1: 1.0
    Case #2: 2.5