어린이 물놀이 풀 채우기

유량과 온도가 다른 수원의 가동 구간을 정해 정확히 V리터 X도의 물을 가장 짧은 시간에 채웁니다.

보통7이분 탐색그리디수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

물놀이용 풀장은 물을 담아 어린아이가 놀 수 있게 만든 큰 통이다.

서로 다른 급수원 NN개를 쓸 수 있다. ii번째 급수원은 온도가 CiC_i도인 물을 초당 RiR_i리터씩 내보낸다. 처음에는 모든 급수원이 꺼져 있다. 각 급수원은 한 번만 켤 수 있고 한 번만 끌 수 있으며, 켜고 끄는 데는 시간이 들지 않는다. 여러 급수원을 동시에 켜 둘 수 있다.

풀장에는 물을 얼마든지 담을 수 있지만, 부피가 정확히 VV리터이고 온도가 정확히 XX도인 물을 최대한 빨리 받으려고 한다. 급수원을 최적으로 켜고 끌 때 걸리는 최소 시간은 몇 초인가? 모든 급수원을 반드시 써야 하는 것은 아니다.

이 문제에서 부피가 V0V_0이고 온도가 X0X_0인 물과 부피가 V1V_1이고 온도가 X1X_1인 물을 합치면 즉시 부피가 V0+V1V_0 + V_1이고 온도가 (V0X0+V1X1)/(V0+V1)(V_0 X_0 + V_1 X_1) / (V_0 + V_1)인 물이 된다. 예를 들어 10도 물 5리터와 40도 물 10리터를 합치면 30도 물 15리터가 된다. 물은 다른 물과 섞이는 경우를 빼면 시간이 지나도 데워지거나 식지 않는다고 가정한다.

입력

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

각 테스트 케이스의 첫 줄에는 공백으로 구분된 세 수 NN, VV, XX가 주어진다. NN은 정수이고 VVXX는 실수이다. 다음 NN개의 줄에는 ii번째 급수원의 유량 RiR_i와 온도 CiC_i가 공백으로 구분되어 주어진다. 부피의 단위는 리터, 유량의 단위는 초당 리터, 온도의 단위는 섭씨도이다.

모든 실수는 소수점 아래 네 자리까지 정확히 주어진다.

제한

  • 1T1001 \le T \le 100
  • 1N1001 \le N \le 100
  • 0.0001V10000.00.0001 \le V \le 10000.0
  • 0.1X99.90.1 \le X \le 99.9
  • 0.0001Ri1000.00.0001 \le R_i \le 1000.0
  • 0.1Ci99.90.1 \le C_i \le 99.9

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, yy는 풀장을 목표 부피와 목표 온도로 채우는 데 걸리는 최소 시간(초)이다. 주어진 입력으로 그렇게 채우는 것이 불가능하면 yy 자리에 IMPOSSIBLE을 출력한다.

yy는 소수점 아래 아홉 자리까지 반드시 출력한다. 열째 자리에서 반올림하고, 값이 정확히 절반이면 올린다. 답이 50초이면 50.000000000으로 출력한다.

예제 설명

첫 번째 예제의 Case #1에서는 하나뿐인 급수원의 온도가 목표 온도와 같다. 바로 켜서 물이 10리터가 될 때까지 두는 것이 최적이다. 1초에 0.2리터가 나오므로 50초가 걸린다.

Case #2의 최적 전략 중 하나는 첫 번째 급수원을 207221.843687375초 동안 켜 두고, 끝나기 약 0.092778156초 전에 두 번째 급수원도 켜는 것이다.

Case #3에서는 급수원 두 개가 모두 목표 온도보다 차갑기 때문에 목표 온도에 도달할 방법이 없다.