공정한 주사위 분배
시간 제한8초메모리 제한1024 MB
각 면에 임의의 수가 적힌 주사위 n개 중 m개를 골라 두 사람에게 나누고, 윗면 합 차이 제곱의 기댓값이 최소가 되는 값을 구합니다.
문제
당신은 정육면체 주사위 여러 개를 사용하는 두 명의 플레이어 게임에서 게임 마스터이다. 주사위의 각 면에는 수가 하나씩 적혀 있다. 일반적인 주사위와 달리 면에 적힌 수가 1부터 6까지여야 하는 것은 아니다.
게임을 시작하기 전에, 가지고 있는 주사위 중에서 정해진 개수만큼 주사위를 골라 두 플레이어에게 나눠준다. 두 플레이어가 받는 주사위 개수는 달라도 되지만, 두 플레이어 모두 주사위를 최소 한 개는 받아야 한다.
게임의 일부 상황에서는 두 플레이어가 받은 주사위를 모두 던진다. 이때 윗면에 나온 수의 합이 큰 플레이어가 더 유리하다.
더 공정한 게임을 위해, 불공정도가 가장 작아지도록 주사위를 고르고 나눠준다.
불공정도는 다음과 같이 정의한다. 한 플레이어 주사위의 윗면 수 합을 , 다른 플레이어의 합을 라 하자. 불공정도는 의 기댓값이다. 각 주사위는 다른 주사위와 독립이며, 각 면이 윗면이 될 확률은 이다.
가지고 있는 주사위로 달성할 수 있는 불공정도의 최솟값을 구하라.
입력
입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋은 다음 형식으로 주어진다.
n m
a_{1,1} a_{1,2} a_{1,3} a_{1,4} a_{1,5} a_{1,6}
...
a_{n,1} a_{n,2} a_{n,3} a_{n,4} a_{n,5} a_{n,6}
은 가지고 있는 주사위의 개수이고, 은 플레이어에게 나눠줄 주사위의 개수이다. 두 값은 을 만족하는 정수이다. 는 번째 주사위의 번째 면에 적힌 수이며, 을 만족하는 정수이다.
입력의 끝은 0 두 개가 한 줄에 적힌 것으로 표시된다. 데이터셋은 100개를 넘지 않는다.
출력
각 데이터셋에 대해, 불공정도에 36을 곱한 값의 최솟값을 한 줄에 출력한다. 이 값은 항상 정수임을 증명할 수 있다.