만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

공정한 주사위 분배

시간 제한8초메모리 제한1024 MB

요약
각 면에 임의의 수가 적힌 주사위 n개 중 m개를 골라 두 사람에게 나누고, 윗면 합 차이 제곱의 기댓값이 최소가 되는 값을 구합니다.
난이도

어려움10점 중 8점

유형
분할 정복, 정렬, 투 포인터, 수학
정답자
아직 제출이 없습니다

문제

당신은 정육면체 주사위 여러 개를 사용하는 두 명의 플레이어 게임에서 게임 마스터이다. 주사위의 각 면에는 수가 하나씩 적혀 있다. 일반적인 주사위와 달리 면에 적힌 수가 1부터 6까지여야 하는 것은 아니다.

게임을 시작하기 전에, 가지고 있는 주사위 중에서 정해진 개수만큼 주사위를 골라 두 플레이어에게 나눠준다. 두 플레이어가 받는 주사위 개수는 달라도 되지만, 두 플레이어 모두 주사위를 최소 한 개는 받아야 한다.

게임의 일부 상황에서는 두 플레이어가 받은 주사위를 모두 던진다. 이때 윗면에 나온 수의 합이 큰 플레이어가 더 유리하다.

더 공정한 게임을 위해, 불공정도가 가장 작아지도록 주사위를 고르고 나눠준다.

불공정도는 다음과 같이 정의한다. 한 플레이어 주사위의 윗면 수 합을 xx, 다른 플레이어의 합을 yy라 하자. 불공정도는 (x−y)2(x-y)^2의 기댓값이다. 각 주사위는 다른 주사위와 독립이며, 각 면이 윗면이 될 확률은 1/61/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}

nn은 가지고 있는 주사위의 개수이고, mm은 플레이어에게 나눠줄 주사위의 개수이다. 두 값은 2≤m≤n≤602 \le m \le n \le 60을 만족하는 정수이다. ai,ja_{i,j}는 ii번째 주사위의 jj번째 면에 적힌 수이며, 0≤ai,j≤600 \le a_{i,j} \le 60을 만족하는 정수이다.

입력의 끝은 0 두 개가 한 줄에 적힌 것으로 표시된다. 데이터셋은 100개를 넘지 않는다.

출력

각 데이터셋에 대해, 불공정도에 36을 곱한 값의 최솟값을 한 줄에 출력한다. 이 값은 항상 정수임을 증명할 수 있다.

예제1

  1. 예제 1

    입력
    4 3
    1 2 3 4 5 6
    10 10 10 20 20 20
    10 11 12 13 14 15
    60 0 60 0 60 0
    2 2
    0 0 0 0 0 0
    60 60 60 60 60 60
    8 6
    58 43 60 42 53 37
    13 41 55 4 21 50
    35 13 54 43 24 5
    40 60 57 48 60 32
    51 32 58 44 60 52
    40 29 25 22 0 44
    31 22 26 30 49 23
    16 34 4 40 21 6
    0 0
    
    예상 출력
    1146
    129600
    31878