锯木材
时间限制:1秒 内存限制:256M
【问题描述】
伐木工人小Y想要得到 \(M\) 米长的木材。
树林中 \(N\) 棵大树排成一列,从左到右编号为 \(1..N\),第 \(i\) 棵树的高度为 \(h_i\)。
小Y的伐木机工作过程如下:小Y设置一个高度参数 \(H\) (米),\(H\) 是一个整数。伐木机会把锯片升高到 \(H\),并锯掉所有的树比 \(H\) 高的部分(树木不高于 \(H\) 米的部分保持不变),小Y得到被锯下的部分的木柴。
例如,有 4 棵高度分别为 20米,15米,10米和17米 的树,小Y把锯片升高到15米的高度,切割后 4 棵树的分别是 15米,15米,10米 和 15米,而小Y将得共到 7 米木材,即从第 1 棵树得到 5 米,从第 4 棵树得到 2 米。
现在请你帮助小Y设定锯片的最大高度 \(H\),使得他能得至少为 \(M\) 米的木材。
【输入格式】
第1行:2个整数 \(N\) 和 \(M\),\(N\) 表示树木的数量,\(M\) 表示需要的木材总长度。
第2行:\(N\) 个整数表示每棵树的高度,值均不超过 \(10^9\),所有木材长度之和大于 \(M\),因此必有解。
【输出格式】
输出锯片的最大高度(是一个整数)。
【输入输出样例】
Input
5 20
4 42 40 26 46
Output
36
【数据限制】
\(n<=10^6 , M<=2*10^9\)
【来源】
Mr.he