#P2518. 书架

书架

题目描述

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

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

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

输入格式

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

输出格式

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

样例

3 2
20
10
30
40
7 3
10
20
30
40
50
60
70
120

样例说明

  • 样例 1:书的高度分别为 20、10、30,每层最多放 2 本。最优分组:一层放高度为 30 和 20 的书(该层高度 30),另一层放高度为 10 的书(该层高度 10),总高度 30+10=40。
  • 样例 2:书的高度分别为 10、20、30、40、50、60、70,每层最多放 3 本。最优分组:一层放 70、60、50(高度 70),一层放 40、30、20(高度 40),一层放 10(高度 10),总高度 70+40+10=120。

数据范围

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