猴子们有一个很大的花园,花园可以分成 n 块不同的区域(编号为 1 到 n)。春暖花开,同时也是杂草开始生长的季节,编号为 i 的区域中有 a_{i}个单位面积的杂草。为了除去花园中的杂草,猴子们请了 n 个除草员分别给 n 块区域除草,每个除草员每个单位时间内可以除去 1 个单位面积的杂草,某个区域的杂草除完后该除草员立即停止工作。 为了提高除草的效率,希望尽快完成除草任务,猴子们买了一台除草机帮助除草员进行除草,但这台除草机在一个单位时间内仅能供一个除草员使用,使用除草机后除草员的工作效率提高到 m,即该除草员每个单位时间可以除去 m 个单位面积的杂草(当然不使用后仍然恢复到原来的工作效率)。 现在,请你编程帮猴子们决定,怎样分配这台除草机的使用对象才能使完成所有除草任务的时间最短?
共 2 行。 第 1 行两个整数 n 和 m,表示花园中共有 n 块待除草的不同区域和除草员使用除草机时的工作效率为 m。 第 2 行 n 个整数,第 i 个整数a_{i}表示第 i 块区域中有 a_{i}个单位面积的杂草。
一个整数,表示完成所有除草任务所需的最短时间。
3 4 2 3 5
2
30%的数据,1≤n≤1000,0≤a_{i}≤10000。 100%的数据,1≤n≤10^5,0≤a i≤10⁹,1≤m≤10⁹。