【问题描述】
高考结束后,同学们大都找到了一份临时工作,渴望挣得一些零用钱。从今天起,Matrix67将连续工作N天。每一天末他可以领取当天及前面若干天里没有领取的工资,但他总共只有M次领取工资的机会。Matrix67已经知道了在接下来的这N天里每一天他可以赚多少钱。为了避免自己滥用零花钱,他希望知道如何安排领取工资的时间才能使得领到工资最多的那一次工资数额最小。
注意:Matrix67必须恰好领工资M次,且需要将所有的工资全部领走(即最后一天末需要领一次工资)。
【输入格式】
第一行输入两个用空格隔开的正整数N和M。
以下N行每行一个不超过10000正整数,依次表示每一天的薪水。
【输出格式】
输出领取到的工资的最大值最小是多少。
【输入样例】
7 5
100
400
300
100
500
101
400
【输出样例】
500
【数据范围】
1<=N<=100000
1 <=M<=N
【样例解释】
采取下面的方案可以使每次领到的工资不会多于500。这个答案不能再少了。
100 400 300 100 500 101 400 每一天的薪水
<——1 <——-2 <—3 <—4 <—5 领取工资的次数
500 400 500 101 400 领取到的工资
题目大意:给你一段序列A,要求你在该序列中找出m个互不重叠且包含完A中所有元素的连续子序列使得各连续子序列的最大值最小。
算法:二分答案(最大值最小问题)。
典型的最大值最小问题,所以想到二分答案,在区间