호텔 적립금

매일의 호텔 가격과 K포인트당 무료 숙박 하나라는 보상 규칙이 주어질 때, 전체 여행의 최소 총비용을 구한다.

보통7동적 계획법그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

유럽을 여행하며 NN일 동안 매일 밤 다른 도시에서 묵으려고 한다. 도시마다 묵을 호텔은 이미 정해 두었으므로, ii번째 밤에 묵을 방의 가격 PiP_i를 모두 알고 있다 (i=1,2,,Ni = 1, 2, \dots, N).

숙소는 적립 제도를 운영하는 예약 사이트에서 예약한다. 이 사이트로 예약한 호텔에서 하룻밤을 묵으면 적립금이 1점 쌓인다. 적립금이 KK점 이상 모이면 언제든 KK점을 써서 아무 호텔에서나 하룻밤을 공짜로 묵을 수 있다. 다만 공짜로 묵은 밤에는 적립금이 쌓이지 않는다.

예를 들어 N=6N = 6, K=2K = 2이고 가격이 P1=10P_1 = 10, P2=3P_2 = 3, P3=12P_3 = 12, P4=15P_4 = 15, P5=12P_5 = 12, P6=18P_6 = 18인 경우를 보자. 앞의 네 밤을 모두 돈을 내고 묵으면 적립금 4점이 쌓이고, 이것으로 남은 두 밤을 공짜로 묵어 숙박비 P1+P2+P3+P4=40P_1 + P_2 + P_3 + P_4 = 40을 낸다. 그런데 세 밤을 묵어 얻은 3점 중 2점을 네 번째 밤에 쓰면, 다섯 번째 밤은 돈을 내고 묵으면서 남은 2점으로 여섯 번째 밤을 공짜로 해결할 수 있다. 이때 숙박비는 P1+P2+P3+P5=37P_1 + P_2 + P_3 + P_5 = 37이라 더 싸다.

숙박비 합계의 최솟값을 구하는 프로그램을 작성하라. 묵으려는 호텔에는 항상 빈 방이 있고, 도시를 방문하는 순서는 바꿀 수 없다.

입력

첫째 줄에 여행하는 밤의 수 NN과 공짜 숙박 한 번에 필요한 적립금 KK가 공백을 사이에 두고 주어진다 (1N,K1051 \le N, K \le 10^5).

둘째 줄에 NN개의 정수 P1,P2,,PNP_1, P_2, \dots, P_N이 공백을 사이에 두고 주어진다. PiP_iii번째 밤에 묵을 방의 가격이다 (1Pi1041 \le P_i \le 10^4).

출력

숙박비 합계의 최솟값을 한 줄에 출력한다.