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