2393. 疯狂切割电缆
1000ms
256MB
简单
递归算法
二分算法
题目描述
某通信工程公司采购了 $n$ 卷不同长度的电缆,现在由于施工需要,要把这些电缆切割成 $k$ 段长度**均**为 $l$ 的小段电缆(允许有剩余的电缆材料)。
为了保证施工质量并减少接头数量,我们希望切出的小段电缆长度 $l$ 越长越好。请编写程序,求出满足要求的长度 $l$ 的最大值。
电缆长度的单位是米($\text{m}$)。采购的电缆初始长度均为正整数,切割后得到的小段电缆长度也必须是正整数。
例如,现有两卷电缆,长度分别为 $11\text{m}$ 和 $21\text{m}$,要求切割成等长的 $6$ 段。显然能够切出的最大单段长度为 $5\text{m}$(第一卷切出 2 段,第二卷切出 4 段,共 6 段)。
输入格式
- 第一行包含两个正整数 $n$ 和 $k$ ($1 \le n \le 10^5, \quad 1 \le k \le 10^8$),分别表示电缆的卷数和需要得到的小段电缆的数量。
- 接下来 $n$ 行,每行包含一个正整数 $L_i$ ($1 \le L_i \le 10^8$),表示每卷电缆的初始长度。
输出格式
- 输出一行一个整数,即最大长度 $l$ 的值。
- 如果所有电缆长度的总和小于 $k$(即连 $1\text{m}$ 的小段都无法切出需要的数量),则输出 `0`。
样例 1
输入 (Input)
3 7 232 124 456
输出 (Output)
114
- 对于 $100\%$ 的数据:$1 \le n \le 10^5$,$1 \le k \le 10^8$,$1 \le L_i \le 10^8$。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功