세탁기

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

요약
3차원 공간의 점 100개를 최대 k개(k <= 2)의 그룹으로 나눠 각 그룹 중심까지의 제곱 거리 합을 최소화한다.
난이도

어려움10점 중 8점

유형
기하, 분할 정복, 완전 탐색, 수학
정답자
아직 제출이 없습니다

문제

옷 nn벌과 세탁기가 하나 있다. 세탁기는 모든 옷을 한 번에 빨래할 수 있을 만큼 크다. 하지만 색 번짐을 걱정해야 한다. 서로 다른 색의 옷을 세탁기에 함께 넣으면 한 옷의 염료가 다른 옷으로 옮을 수 있다. 구체적으로, ii번째 옷의 빨강, 초록, 파랑 색의 양을 각각 rir_i, gig_i, bib_i라 하자. nn벌의 옷을 함께 빨래할 때 색 번짐 cc는 다음과 같이 정의된다.

c=∑i=1n(ri−r)2+(gi−g)2+(bi−b)2c = \sum_{i=1}^{n}{(r_i - r)^2 + (g_i - g)^2 + (b_i - b)^2}

여기서 rr, gg, bb는 각각 rir_i, gig_i, bib_i의 평균이다. rir_i, gig_i, bib_i를 가진 ii번째 옷은 3차원 RGB 공간의 점 (ri,gi,bi)(r_i, g_i, b_i)로 정의한다. RGB 공간에서 어느 세 점도 한 직선 위에 있지 않고, 어느 네 점도 한 평면 위에 있지 않다고 가정해도 된다.

세탁기는 전기를 많이 소비하므로, nn벌의 옷을 최대 kk개의 그룹으로 나누고 각 그룹마다 세탁기를 한 번씩 돌려야 한다. 총 색 번짐은 각 세탁에서 발생한 색 번짐의 합이다. nn벌의 옷 색 정보와 kk가 주어질 때, 총 색 번짐의 최솟값을 계산하는 프로그램을 작성하시오.

입력

프로그램은 표준 입력에서 데이터를 읽는다. 첫째 줄에 두 정수 nn (1 ≤ nn ≤ 100)과 kk (1 ≤ kk ≤ 2)가 주어진다. 다음 nn개의 줄 중 ii번째 줄에 세 정수 rir_i, gig_i, bib_i (0 ≤ rir_i, gig_i, bib_i ≤ 1,000)가 주어진다.

출력

프로그램은 표준 출력에 결과를 쓴다. 총 색 번짐의 최솟값을 소수점 아래 여섯째 자리에서 반올림하여 정확히 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    2 1
    36 16 85
    74 87 38
    
    예상 출력
    4347.000000
    
  2. 예제 2

    입력
    1 2
    12 26 90
    
    예상 출력
    0.000000
    
  3. 예제 3

    입력
    3 2
    93 50 26
    40 0 77
    99 10 29
    
    예상 출력
    822.500000