书架
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
为了方便同学们查阅资料,程序设计兴趣小组的辅导老师打算将积攒了多年的n本书放到教室的书架上。
教室的书架由多层组成,每层最多可放m本书。每层的高度由该层中最高的那本书决定,若某层不放书,则高度为0。为了使同学们能方便地拿到想要的书,需要让书架的总高度尽可能低。
请编程计算将n本书放在书架上后的最小总高度(计算过程中不考虑书的厚度与书架本身材料的厚度)。
输入格式
输入共n+1行。 第一行包含两个整数n和m(1≤m≤n≤100000),分别表示书的数量和每层最多可放的书的数量。 接下来n行,每行一个正整数,表示每本书的高度(每本书的高度不超过100)。
输出格式
输出一行,为书架的最小总高度。
样例输入1
3 2
20
10
30
样例输出1
40
样例说明1
将书按高度从高到低排序为30、20、10。每层最多放2本,最优摆放方式为:
- 第一层放30和20(最高高度为30)
- 第二层放10(最高高度为10)
总高度为30 + 10 = 40。
样例输入2
7 3
10
20
30
40
50
60
70
样例输出2
120
样例说明2
将书按高度从高到低排序为70、60、50、40、30、20、10。每层最多放3本,最优摆放方式为:
- 第一层放70、60、50(最高高度为70)
- 第二层放40、30、20(最高高度为40)
- 第三层放10(最高高度为10)
总高度为70 + 40 + 10 = 120。