#P2518. 书架

书架

题目描述

为了方便同学们查阅资料,程序设计兴趣小组的辅导老师打算将积攒了多年的 nn 本书放到教室的书架上。

教室的书架由多层组成,每层最多可放 mm 本书。每层的高度由该层中最高的那本书决定,若某层不放书,则高度为 00。为了使同学们能方便地拿到想要的书,需要让书架的总高度尽可能低。

请编程计算将 nn 本书放在书架上后的最小总高度(计算过程中不考虑书的厚度与书架本身材料的厚度)。

输入格式

第一行包含两个整数 nnmm,分别表示书的数量和每层最多可放的书的数量。
接下来 nn 行,每行一个正整数,表示每本书的高度。

输出格式

输出一行,一个整数,表示书架的最小总高度。

样例

3 2
20
10
30
40

样例 1 解释
书的高度分别为 202010103030,每层最多放 22 本。最优分组:一层放高度为 30302020 的书(该层高度 3030),另一层放高度为 1010 的书(该层高度 1010),总高度 30+10=4030+10=40

7 3
10
20
30
40
50
60
70
120

样例 2 解释
书的高度分别为 10,20,30,40,50,60,7010,20,30,40,50,60,70,每层最多放 33 本。最优分组:一层放 70,60,5070,60,50(高度 7070),一层放 40,30,2040,30,20(高度 4040),一层放 1010(高度 1010),总高度 70+40+10=12070+40+10=120

数据范围

  • 1mn1000001 \le m \le n \le 100000
  • 每本书的高度不超过 100100