题目描述
小C带领M个同学去比赛。在机场时轮到他们登记。机场一共有N个登记窗口,每一个窗口的工作效率不一定相同,所以登记的速度也不一定相同。对于第k个窗口,登记每一个乘客时需要时间为Tk。
在登记开始时,所有的窗口都是空闲的,可以立刻开始下一个人的登记工作,且当时只有小C和同学在进行登记。只有当前窗口空闲时才可以开始下一个人的登记工作。上一个人结束和下一个人开始之间衔接,以及每个人改变排队所在的窗口所消耗的时间忽略不计。
小C希望你能帮他计算出所有人完成登记所需的最小时间。
输入
输入第一行,两个整数N(1≤N≤105)和M(1≤M≤109),分别表示窗口的总数和总人数。
接下来N行,每行一个整数Tk(1≤Tk≤109)。
输出
输出仅一行,表示最少所需的时间。
样例输入
2 6
7
10
7 10
3
8
3
6
9
2
4
样例输出
28
8
提示
对于75%的数据,M不大于300 000。
图片是原题自带的,侵删。
本题涉及到二分法,如果用暴力枚举或者优化后的枚举,时间复杂度也势必要到达O(m*n),应用二分可以将时间复杂度减少至O(log2m * n)。具体思路是二分可能用的时间。
代码如下。
#include