앞선 사건 결과가 뒤따르는 사건 확률을 바꾸는 n개 사건에서 이중 주사위 개입 k번을 배분해 마지막 사건이 성공할 확률을 최대화합니다.
어려움8동적 계획법확률아직 제출이 없습니다시간 제한5초메모리 제한256 MB앞으로 일어날 사건이 n개 있다. 각 사건의 결과는 긍정 아니면 부정이고, 그 결과가 뒤에 오는 사건의 확률을 바꾼다.
사건은 입력에 주어진 순서대로 일어난다. 사건 i에는 정수 기준값 bi가 붙어 있다. 결과는 눈이 1부터 m까지 적힌 공정한 주사위를 한 번 굴려서 정한다. 나온 눈을 기준값에 더한 값이 0보다 크면 긍정, 그렇지 않으면 부정이다. 합이 정확히 0인 경우도 부정이다. 사건 i가 긍정이면 뒤에 오는 모든 사건 j의 기준값이 bj+pij로 바뀌고, 부정이면 bj+qij로 바뀐다. 주사위는 모두 독립으로 굴린다.
당신은 사건에 개입할 힘이 있다. 개입하면 주사위를 한 개가 아니라 두 개 굴리고, 두 눈을 모두 확인한 뒤 마음에 드는 쪽을 고른다. 개입할지는 그 사건의 주사위를 굴리기 직전에 정하므로, 앞선 사건의 결과를 보고 결정해도 된다. 개입은 최대 k번까지 할 수 있다. 마지막 사건 n이 긍정으로 끝날 확률의 최댓값을 구하라.
첫 줄에 사건의 수 n, 개입 횟수의 상한 k, 주사위의 면 수 m이 공백으로 구분되어 주어진다 (1≤k≤n≤20, 4≤m≤1000). 이어서 3n줄에 걸쳐 각 사건의 기준값과 변화량이 주어진다. 줄 번호는 입력의 첫 줄부터 센다.
모든 변화량은 절댓값이 2000 이하이다. 마지막 사건에는 변화량이 없으므로 입력의 마지막 두 줄은 비어 있다.
마지막 사건이 긍정으로 끝날 확률의 최댓값을 소수점 아래 여섯째 자리까지 반올림해 한 줄에 출력한다. 소수점 아래 자릿수는 항상 정확히 여섯 개여야 한다.