n개의 게임 중 k개를 골라 순서를 정했을 때 최종 금액의 기댓값이 최대가 되는 값을 구해 출력한다.
보통7동적 계획법정렬확률아직 제출이 없습니다시간 제한2초메모리 제한512 MB놀이공원에 게임 G1,G2,…,Gn이 있다. 이 중에서 k개를 골라 원하는 순서대로 한 번씩 플레이한다. 같은 게임을 두 번 플레이할 수는 없고, 어떤 k개를 어떤 순서로 할지는 첫 게임을 시작하기 전에 모두 정해야 한다.
처음에 가진 돈은 x0 오슐룹이다. 게임 Gi를 시작할 때 가진 돈이 x 오슐룹이라고 하자. 이 게임을 이기면 돈이 x+Ai가 되고, 지면 x의 Li퍼센트를 잃어 x×(1−Li/100)이 된다. 게임 Gi를 이길 확률은 Pi퍼센트이고, 각 게임의 승패는 서로 독립이다.
고른 k개를 정해 둔 순서대로 모두 플레이한 뒤 손에 남는 돈의 기댓값이 가장 크도록 선택과 순서를 정하고, 그때의 기댓값을 구하는 문제다.
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 세 정수 n, k, x0이 공백으로 구분되어 주어진다 (1≤k≤n≤100, 0≤x0≤106). 이어지는 n개 줄 중 i번째 줄에는 게임 Gi를 나타내는 세 정수 Ai, Li, Pi가 공백으로 구분되어 주어진다 (0≤Ai,Li,Pi≤100).
입력의 마지막 줄에는 0 0 0이 주어지며, 이 줄은 테스트 케이스가 아니므로 처리하지 않는다.
각 테스트 케이스마다 최종 금액의 기댓값이 가질 수 있는 최댓값을 소수점 아래 셋째 자리에서 반올림해 한 줄에 출력한다. 소수점 아래 둘째 자리까지 항상 두 자리를 모두 적는다.
정확히 중간인 값은 올린다. 예를 들어 1.005는 1.01로 출력한다. 테스트 데이터의 정답은 반올림 경계에서 언제나 10−4보다 멀리 떨어져 있으므로, 배정밀도 실수로 계산해도 자릿수가 흔들리지 않는다.