아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

매장

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

요약
물건 가격들이 주어질 때, 각 영수증에서 가장 싼 floor(개수/k)개의 물건이 무료가 되도록 영수증을 나누어 지불 총액을 최소로 만든다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 정렬, 배열
정답자
아직 제출이 없습니다

문제

빌은 대가족이다. 아들이 셋, 손자가 아홉이다. 모두를 먹여야 하므로 빌은 일주일에 한 번 매장에 간다.

어느 날 빌은 매장에서 <<kk번째 상품마다 무료>>라는 행사를 보고 있다는 것을 알게 되었다. 행사 규칙을 살펴본 빌은 다음 사실을 알아냈다. 계산대에서 상품을 찍으면 영수증이 나온다. 영수증에 상품이 nn개 있으면, 그중 가장 싼 n/kn/k개(내림)가 무료로 주어진다.

예를 들어 영수증에 200, 100, 1000, 400, 100루블짜리 상품 다섯 개가 있고 k=2k = 2라면, 100루블짜리 상품 두 개가 무료가 되고, 구매자는 총 1600루블을 내야 한다.

빌은 이미 상품을 골라 계산대로 향하던 중, 사려는 상품을 여러 영수증으로 나누면 돈을 덜 쓸 수 있다는 것을 깨달았다.

빌이 고른 상품을 여러 영수증으로 나누었을 때 낼 수 있는 최소 금액을 구하도록 도와주자.

입력

첫째 줄에 정수 nn, kk가 주어진다(1≤n≤100 0001 \le n \le 100\,000, 2≤k≤1002 \le k \le 100). nn은 빌이 사려는 상품의 개수이고, kk는 <<kk번째 상품마다 무료>> 행사의 매개변수이다.

다음 줄에 nn개의 정수 a_ia\_i가 주어진다(1≤a_i≤10 0001 \le a\_i \le 10\,000). a_ia\_i는 빌이 사는 상품의 가격이다.

출력

빌이 상품에 대해 내야 하는 최소 금액을 하나의 수로 출력한다.

힌트

위 예에서 빌은 상품을 두 영수증으로 나눌 수 있다. 한 영수증에는 1000루블과 400루블짜리 상품이 들어가고, 이 영수증에서는 400루블짜리 상품이 무료가 된다. 다른 영수증에는 나머지 상품이 들어가고, 여기서는 100루블짜리 상품 하나가 무료가 된다. 따라서 빌은 1300루블을 내야 한다.

예제1

  1. 예제 1

    입력
    5 2
    200 100 1000 400 100
    
    예상 출력
    1300