아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

놀이공원 게임

시간 제한2초메모리 제한512 MB

요약
n개의 게임 중 k개를 골라 순서를 정했을 때 최종 금액의 기댓값이 최대가 되는 값을 구해 출력한다.
난이도

보통10점 중 7점

유형
동적 계획법, 정렬, 확률
정답자
아직 제출이 없습니다

문제

놀이공원에 게임 G1,G2,…,GnG_1, G_2, \dots, G_n이 있다. 이 중에서 kk개를 골라 원하는 순서대로 한 번씩 플레이한다. 같은 게임을 두 번 플레이할 수는 없고, 어떤 kk개를 어떤 순서로 할지는 첫 게임을 시작하기 전에 모두 정해야 한다.

처음에 가진 돈은 x0x_0 오슐룹이다. 게임 GiG_i를 시작할 때 가진 돈이 xx 오슐룹이라고 하자. 이 게임을 이기면 돈이 x+Aix + A_i가 되고, 지면 xx의 LiL_i퍼센트를 잃어 x×(1−Li/100)x \times (1 - L_i / 100)이 된다. 게임 GiG_i를 이길 확률은 PiP_i퍼센트이고, 각 게임의 승패는 서로 독립이다.

고른 kk개를 정해 둔 순서대로 모두 플레이한 뒤 손에 남는 돈의 기댓값이 가장 크도록 선택과 순서를 정하고, 그때의 기댓값을 구하는 문제다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 세 정수 nn, kk, x0x_0이 공백으로 구분되어 주어진다 (1≤k≤n≤1001 \le k \le n \le 100, 0≤x0≤1060 \le x_0 \le 10^6). 이어지는 nn개 줄 중 ii번째 줄에는 게임 GiG_i를 나타내는 세 정수 AiA_i, LiL_i, PiP_i가 공백으로 구분되어 주어진다 (0≤Ai,Li,Pi≤1000 \le A_i, L_i, P_i \le 100).

입력의 마지막 줄에는 0 0 0이 주어지며, 이 줄은 테스트 케이스가 아니므로 처리하지 않는다.

출력

각 테스트 케이스마다 최종 금액의 기댓값이 가질 수 있는 최댓값을 소수점 아래 셋째 자리에서 반올림해 한 줄에 출력한다. 소수점 아래 둘째 자리까지 항상 두 자리를 모두 적는다.

정확히 중간인 값은 올린다. 예를 들어 1.0051.005는 1.01로 출력한다. 테스트 데이터의 정답은 반올림 경계에서 언제나 10−410^{-4}보다 멀리 떨어져 있으므로, 배정밀도 실수로 계산해도 자릿수가 흔들리지 않는다.

예제3

  1. 예제 1

    입력
    2 2 100
    10 0 50
    100 10 20
    2 1 100
    10 0 50
    100 10 20
    0 0 0
    
    예상 출력
    117.00
    112.00
    
  2. 예제 2

    입력
    3 2 1000
    0 50 50
    60 20 100
    100 0 30
    0 0 0
    
    예상 출력
    1090.00
    
  3. 예제 3

    입력
    1 1 0
    100 0 37
    1 1 1000000
    0 100 0
    0 0 0
    
    예상 출력
    37.00
    0.00