#3668. 加速清空 (clean)
加速清空 (clean)
题目描述
处理系统中有 个任务,第 个任务最初还有 单位的工作量。
系统以完整的整数秒为单位运行。在每一秒开始时,你可以选择至多一个尚未完成的任务使用加速器。在这一秒结束时:
- 每个尚未完成的任务都会自动减少 单位工作量;
- 被加速器选中的任务还会额外减少 单位工作量。
因此,被选中的任务在这一秒内共减少 单位工作量,其他尚未完成的任务减少 单位工作量。每一秒都可以重新选择要加速的任务,也可以不使用加速器。
当一个任务的剩余工作量小于或等于 时,该任务完成,之后不再需要处理。
请计算完成全部任务所需的最少整数秒数。
输入格式
在文件 clean.in 中读入。
第一行输入三个整数 。
第二行输入 个整数 ,表示各任务最初的工作量。
输出格式
在文件 clean.out 中输出。
输出一行一个整数,表示完成全部任务所需的最少秒数。
样例
样例输入 #1
4 2 3
2 4 7 8
样例输出 #1
3
样例 1 解释
经过 秒的自动处理,每个任务都会减少 单位工作量。此时第 、 个任务还分别需要减少 和 单位工作量。
可以在这 秒中的两秒分别加速第 、 个任务,从而在 秒内完成全部任务。
如果只运行 秒,自动处理后第 、 个任务还分别剩余 和 单位工作量。它们分别至少需要 秒和 秒加速,共需 秒加速器时间,而两秒内加速器最多工作 秒,因此无法完成。答案为 。
数据范围
对于所有测试数据,保证:
之间不要求互不相同。计算过程中可能出现超出 32 位有符号整数范围的中间结果。
| 子任务 | 分值 | 额外限制 |
|---|---|---|
| 1 | 20 | ,且 |
| 2 | 30 | ,且 |
| 3 | 50 | 无额外限制 |