직선 위의 대표값 K개

K를 1부터 N까지 변화시키며, 주어진 점들까지의 거리 합이 최소가 되도록 실수 위의 K개 점을 배치하는 문제입니다.

어려움8동적 계획법분할 정복그리디정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정수 수열 a1,a2,,aNa_1, a_2, \dots, a_N이 주어진다. 자연수 KK에 대해, 반드시 정수일 필요는 없는 실수 b1,b2,,bKb_1, b_2, \dots, b_K를 골라 다음 식 SS의 값을 가장 작게 만들려고 한다.

S=i=1Nmin1jKaibjS=\sum_{i=1}^{N} \min_{1 \le j \le K} |a_i - b_j|

KK11부터 NN까지 변할 때, 각 KK에 대해 SS의 최솟값을 구하라.

입력

첫째 줄에 자연수 NN (1N50001 \le N \le 5000)이 주어진다.

둘째 줄에 수열 aa를 이루는 정수 NN개가 공백으로 구분되어 주어진다. 각 값은 00 이상 200000200000 이하다. 수열이 정렬되어 있다는 보장은 없다.

출력

한 줄에 수 NN개를 공백으로 구분해 출력한다. KK번째 수는 수열 bb의 길이가 KK일 때 SS의 최솟값이다. 모든 답은 정수다.

힌트

예제에서 K=3K = 3일 때는 b={0,6,13}b = \{0, 6, 13\}을, K=4K = 4일 때는 b={0,5,9,13}b = \{0, 5, 9, 13\}을 고를 수 있다.