유량과 온도가 다른 수원의 가동 구간을 정해 정확히 V리터 X도의 물을 가장 짧은 시간에 채웁니다.
보통7이분 탐색그리디수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB물놀이용 풀장은 물을 담아 어린아이가 놀 수 있게 만든 큰 통이다.
서로 다른 급수원 N개를 쓸 수 있다. i번째 급수원은 온도가 Ci도인 물을 초당 Ri리터씩 내보낸다. 처음에는 모든 급수원이 꺼져 있다. 각 급수원은 한 번만 켤 수 있고 한 번만 끌 수 있으며, 켜고 끄는 데는 시간이 들지 않는다. 여러 급수원을 동시에 켜 둘 수 있다.
풀장에는 물을 얼마든지 담을 수 있지만, 부피가 정확히 V리터이고 온도가 정확히 X도인 물을 최대한 빨리 받으려고 한다. 급수원을 최적으로 켜고 끌 때 걸리는 최소 시간은 몇 초인가? 모든 급수원을 반드시 써야 하는 것은 아니다.
이 문제에서 부피가 V0이고 온도가 X0인 물과 부피가 V1이고 온도가 X1인 물을 합치면 즉시 부피가 V0+V1이고 온도가 (V0X0+V1X1)/(V0+V1)인 물이 된다. 예를 들어 10도 물 5리터와 40도 물 10리터를 합치면 30도 물 15리터가 된다. 물은 다른 물과 섞이는 경우를 빼면 시간이 지나도 데워지거나 식지 않는다고 가정한다.
첫 줄에 테스트 케이스의 수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 공백으로 구분된 세 수 N, V, X가 주어진다. N은 정수이고 V와 X는 실수이다. 다음 N개의 줄에는 i번째 급수원의 유량 Ri와 온도 Ci가 공백으로 구분되어 주어진다. 부피의 단위는 리터, 유량의 단위는 초당 리터, 온도의 단위는 섭씨도이다.
모든 실수는 소수점 아래 네 자리까지 정확히 주어진다.
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 풀장을 목표 부피와 목표 온도로 채우는 데 걸리는 최소 시간(초)이다. 주어진 입력으로 그렇게 채우는 것이 불가능하면 y 자리에 IMPOSSIBLE을 출력한다.
y는 소수점 아래 아홉 자리까지 반드시 출력한다. 열째 자리에서 반올림하고, 값이 정확히 절반이면 올린다. 답이 50초이면 50.000000000으로 출력한다.
첫 번째 예제의 Case #1에서는 하나뿐인 급수원의 온도가 목표 온도와 같다. 바로 켜서 물이 10리터가 될 때까지 두는 것이 최적이다. 1초에 0.2리터가 나오므로 50초가 걸린다.
Case #2의 최적 전략 중 하나는 첫 번째 급수원을 207221.843687375초 동안 켜 두고, 끝나기 약 0.092778156초 전에 두 번째 급수원도 켜는 것이다.
Case #3에서는 급수원 두 개가 모두 목표 온도보다 차갑기 때문에 목표 온도에 도달할 방법이 없다.