#3850. KKT基本算法砍伐树木

    ID: 3850 传统题 1000ms 256MiB 尝试: 5 已通过: 5 难度: 3 上传者: 标签>数据结构其他二分查找二分图论结构体

KKT基本算法砍伐树木

题目描述

lxj 被 cxy 叫去砍树,他需要砍倒 mm 米长的木材。现在,lxj 弄到了一个奇怪的伐木机。伐木机工作过程如下:设置一个高度参数 hh(米),伐木机升起一个巨大的锯片到高度 hh,并锯掉所有的树比 hh 高的部分(当然,树木不高于 hh 米的部分保持不变)。lxj 就得到树木被锯下的部分。

例如,如果一行树的高度分别为 2020151510101717 米,lxj 把锯片升到 1515 米的高度,切割后树木剩下的高度将是 1515151510101515 米,而 lxj 将从第 11 棵树得到 55 米,从第 44 棵树得到 22 米,共得到 77 米木材。

lxj 非常关注生态保护,所以他不会砍掉过多的木材。这正是他为什么要尽可能高地设定伐木机锯片的原因。帮助 lxj 找到伐木机锯片的最大的整数高度 hh,使得他能得到的木材至少为 mm 米。换句话说,如果再升高 11 米,则他将得不到 mm 米木材。

输入格式

11 行两个整数 nnmmnn 表示树木的数量,mm 表示需要的木材总长度。

22nn 个整数,表示每棵树的高度,值均不超过 10910^9。保证所有木材长度之和大于 mm,因此必然有解。

输出格式

一行一个整数,表示伐木机锯片的最大整数高度 hh

样例

5 20
4 42 40 26 46
36

样例解释

当伐木机锯片高度设置为 3636 米时,各棵树被锯下的长度分别为:

  • 11 棵树高度 44 米,低于 3636 米,锯下 00 米;
  • 22 棵树高度 4242 米,锯下 4236=642-36=6 米;
  • 33 棵树高度 4040 米,锯下 4036=440-36=4 米;
  • 44 棵树高度 2626 米,低于 3636 米,锯下 00 米;
  • 55 棵树高度 4646 米,锯下 4636=1046-36=10 米。

总共锯下 6+4+10=206+4+10=20 米,恰好满足需要的 2020 米木材。若将锯片高度升高到 3737 米,锯下的木材长度不足 2020 米,因此 3636 是满足条件的最大整数高度。

数据范围与提示

  • 对于 30%30\% 的数据满足:1n101 \le n \le 101m301 \le m \le 30
  • 对于 70%70\% 的数据满足:1n1031 \le n \le 10^31m1041 \le m \le 10^4
  • 对于 100%100\% 的数据满足:1n1061 \le n \le 10^61m2×1091 \le m \le 2 \times 10^9

所有树的高度均不超过 10910^9,所有木材长度之和大于 mm,因此必然有解。