은행 강도
면접 대비시간 제한1초메모리 제한256 MB
잡힐 확률이 제한 미만으로 유지되도록 은행 부분집합을 골라 훔치는 금액 합을 최대화합니다.
문제
로이는 짧은 기간만 은행을 털고 대학의 편안한 자리로 물러날 생각이다. 몇 달 동안 은행마다 현금이 얼마나 있는지, 털었을 때 잡힐 위험이 얼마나 되는지 조사했다.
어머니 올라는 견딜 수 있는 위험의 한계를 정해 두었다. 로이는 은행을 원하는 대로 골라 털 수 있고 같은 은행은 최대 한 번만 턴다. 다만 잡힐 확률이 이 한계보다 반드시 작아야 한다. 은행마다 잡히는 사건은 서로 독립이므로 집합 에 속한 은행을 털면 잡힐 확률은 이다.
로이가 가져올 수 있는 금액의 최댓값을 구하라.
입력
첫째 줄에 테스트 케이스의 수 가 주어진다.
각 테스트 케이스의 첫째 줄에는 실수 와 정수 이 주어진다. 는 로이가 넘지 말아야 할 한계이고, 은 그가 계획해 둔 은행의 수이다. 이어지는 개의 줄에는 정수 와 실수 가 주어진다. 은행 에는 백만이 있고, 이 은행을 털 때 잡힐 확률은 이다.
- 입력의 모든 실수는 소수점 아래 두 자리 이하이다.
털린 은행은 곧바로 파산하므로 같은 은행을 두 번 털지 않는다.
출력
각 테스트 케이스마다 잡힐 확률을 보다 작게 유지하면서 가져올 수 있는 최대 금액을 백만 단위로 한 줄에 출력한다. 조건을 만족하는 선택이 없으면 0을 출력한다.