给你一个整数数组 demand,其中 demand[i] 是第 i 辆车需要的燃料量。
同时给你一个长度为 2 的整数数组 fuel。有 恰好 两个加油机,编号为 0 和 1,其中 fuel[j] 是加油机 j 中可用的初始燃料量。
允许车辆按 递增 的下标顺序开始加油。第 0 辆车在时间 0 被允许加油,对于每个 i > 0,第 i 辆车 恰好 在第 i - 1 辆车开始加油时被允许加油。
加油过程遵循以下规则:
demand[i] 时,车辆才能在该加油机开始加油。demand[i] 秒,并将该加油机的剩余燃料减少 demand[i]。demand[i],则过程终止,且无法再服务更多车辆。车辆的 等待时间 是从它被允许开始加油到实际开始加油之间的时间。
在 最大化 被服务车辆数量的所有分配方案中,返回所有被服务车辆中 最大 等待时间的 最小 可能值。如果没有车辆可以被服务,返回 -1。
示例 1:
输入: demand = [6,8,4,6,5], fuel = [16,13]
输出: 6
解释:
| 车辆 | 被允许的时间 | 开始加油的时间 | 使用的加油机 | 开始前的剩余燃料 (加油机 0,加油机 1) | 等待时间 |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | (16, 13) | 0 |
| 1 | 0 | 0 | 1 | (10, 13) | 0 |
| 2 | 0 | 6 | 0 | (10, 5) | 6 |
| 3 | 6 | 10 | 0 | (6, 5) | 4 |
| 4 | 10 | 10 | 1 | (0, 5) | 0 |
因此,所有 5 辆车都得到了服务,最大等待时间为 6。
为了服务所有 5 辆车,加油机 0 必须服务 demand 为 6、4 和 6 的车辆,而加油机 1 必须服务 demand 为 8 和 5 的车辆。因此,车辆 2 必须等到时间 6 才能让加油机 0 空闲,所以任何服务所有 5 辆车的分配方案,其最大等待时间都不可能小于 6。
示例 2:
输入: demand = [10,15], fuel = [12,17]
输出: 0
解释:
示例 3:
输入: demand = [10,5], fuel = [8,8]
输出: -1
解释:
提示:
1 <= demand.length <= 501 <= demand[i] <= 20fuel.length == 21 <= fuel[i] <= 50