在小慕的研发实验室里,有三台核心处理设备:一台极速运算核心(加速卡)和两台标准处理单元(普通处理器)。它们需要共同完成一批数据任务的处理工作。 * 极速运算核心的处理速度为 `2` 单位/秒(每秒可以处理 2 单位的数据量)。 * 每台标准处理单元的处理速度为 `1` 单位/秒(每秒可以处理 1 单位的数据量)。 现在有一组数据任务 `tasks`,其中 `tasks[i]` 表示第 `i` 个任务的数据量(单位:数据单位)。 小慕需要为这些任务制定最优分配方案,遵循以下目标: 1. 首先,使所有任务完成的最短。 2. 如果存在多种最优方案,则选择其中极速运算核心承担的任务数最少的方案。 每个任务只能由其中一台设备负责,且处理过程中不可中断或转移。 最终输出结果为: * `minTime`:所有任务完成所需的最短总时长 * `coreTaskCount`:极速运算核心处理的任务数量 以 `[minTime, coreTaskCount]` 的形式返回答案。
提示:带虚线的词点一下有通俗解释。
输入描述
* 输入的第一行包含一个整数 `n`,表示任务数量。 * 输入的第二行包含 `n` 个整数,分别表示每个任务的能量大小。 * `0 < n <= 10` * `0 < tasks[i] < 2^31 - 1` 且保证所有 `tasks[i]` 为偶数 * 保证结果满足 `minTime < 2^31`
输出描述
* 输出两个整数,分别为 `minTime` 与 `dragonTaskCount`。
示例
示例 1
输入
8 6 10 14 8 12 20 16 18
输出
26 3
说明:* idx0: 6 → `2` (炼金师B) → 6 * idx1: 10 → `1` (炼金师A) → 10 * idx2: 14 → `0` (巨龙) → 14/2 = 7 * idx3: 8 → `2` (炼金师B) → 8 * idx4: 12 → `2` (炼金师B) → 12 * idx5: 20 → `0` (巨龙) → 20/2 = 10 * idx6: 16 → `1` (炼金师A) → 16 * idx7: 18 → `0` (巨龙) → 18/2 = 9 * 巨龙(0):`7 + 10 + 9 = 26`(承担任务数 `3` 个) * 炼金师A(1):`10 + 16 = 26` * 炼金师B(2):`6 + 8 + 12 = 26` 因此 `minTime = max(26, 26, 26) = 26`,`accelTaskCount = 3`。
时间限制 1000 ms · 内存限制 128 MB