유아용 풀
시간 제한5초메모리 제한512 MB
각 수원을 켜고 끄는 시점을 정해 정확히 V리터의 물을 목표 온도 X에 맞춰 가장 짧은 시간에 받습니다.
문제
유아용 풀은 물을 담아 어린아이가 놀 수 있게 만든 큰 통이다.
서로 다른 수원 개를 쓸 수 있다. 번째 수원은 온도가 인 물을 초당 리터씩 내보낸다. 처음에는 모든 수원이 꺼져 있다. 각 수원은 한 번만 켤 수 있고 한 번만 끌 수 있으며, 켜거나 끄는 데 드는 시간은 없다. 여러 수원을 동시에 켜 둘 수 있다.
풀에는 물을 얼마든지 담을 수 있지만, 부피가 정확히 이고 온도가 정확히 인 물을 최대한 빨리 받으려고 한다. 수원을 최적으로 켜고 끌 때, 목표를 이루는 데 걸리는 최소 시간은 몇 초인가? 모든 수원을 다 쓸 필요는 없다.
이 문제에서 부피가 이고 온도가 인 물과 부피가 이고 온도가 인 물을 합치면 즉시 부피가 이고 온도가 인 물이 된다. 예를 들어 10도인 물 5리터와 40도인 물 10리터를 합치면 30도인 물 15리터가 된다. 물은 다른 물과 섞일 때를 빼면 시간이 지나도 데워지거나 식지 않는다.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 정수 과 실수 , 가 공백으로 구분되어 주어진다. 다음 개의 줄에는 번째 수원의 유량 와 온도 가 공백으로 구분되어 주어진다. 부피의 단위는 리터, 유량의 단위는 초당 리터, 온도의 단위는 섭씨이다.
모든 실수는 소수점 아래 넷째 자리까지 정확히 주어진다.
제한
- 답이 존재하는 테스트 케이스에서 답은 항상 보다 작다.
출력
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 풀을 목표 부피와 목표 온도로 채우는 데 걸리는 최소 시간(초)이다. 주어진 입력으로 목표를 이룰 수 없으면 자리에 IMPOSSIBLE을 출력한다.
는 소수점 아래 일곱째 자리에서 반올림해 소수점 아래 여섯째 자리까지 출력하며, 마지막이 0이더라도 여섯 자리를 모두 적는다. 모든 테스트 데이터에서 정답은 반올림 경계에서 충분히 떨어져 있으므로, 배정밀도 실수 연산으로 계산해도 출력 값은 달라지지 않는다.
힌트
첫 번째 예제 테스트 케이스에서는 하나뿐인 수원의 온도가 목표 온도와 같다. 바로 켜서 물이 10리터가 될 때까지 두는 것이 최적이고, 초당 0.2리터가 나오므로 50초가 걸린다.
두 번째 예제 테스트 케이스에서는 첫 번째 수원을 약 207221.843687초 동안 켜 두고, 끝나기 약 0.092778초 전에 두 번째 수원도 함께 켜는 방법이 최적이다.
세 번째 예제 테스트 케이스에서는 두 수원 모두 목표 온도보다 차갑기 때문에 목표 온도에 도달할 방법이 없다.