在「小慕」负责的一个数据中心里,有若干台计算节点,每台节点都在持续运行各种服务(例如缓存服务、图像渲染、模拟计算等)。 第 `i` 台节点当前承载的服务数记录在数组 `currentLoad[i]` 中。 每台节点的最大服务承载能力为 `maxCapacity`。 若某节点的服务数等于 `maxCapacity`,则称其为满载节点。 小慕即将部署 `extraTasks` 个新的服务任务(这些任务也可以选择不全部部署)。 由于系统架构限制,已有任务不能终止,也不能在节点间迁移。 你需要决定如何将这些新任务分配给各节点,以最大化数据中心的平衡。 评估值由以下两部分组成: 1. 满载得分: 满载节点的数量 × `weightFull` 2. : 在未满载的节点中,找出当前服务数最少的节点,其服务数 × `weightLow` 若所有节点都满载,则此项得分为 0。 请你计算,小慕能够获得的最大评估值是多少。
提示:带虚线的词点一下有通俗解释。
输入描述
输入包含五行: ``` n currentLoad[1] currentLoad[2] ... currentLoad[n] maxCapacity extraTasks weightFull weightLow ``` 其中: - `1 <= n <= 10^4` - `1 <= currentLoad[i] <= maxCapacity <= 10^3` - `1 <= extraTasks <= 10^10` - `1 <= weightFull <= 10^4` - `1 <= weightLow <= 10^4`
输出描述
输出一个整数,表示可获得的最大评估值。
示例
示例 1
输入
5 2 5 3 5 4 5 4 10 2
输出
46
说明:样例说明: - 共有 5 个核心,最大承载 maxCapacity = 5。 - 当前负载为 [2, 5, 3, 5, 4],其中已有 2 个核心满载。 - 可额外分配 4 个新任务。 最佳方案: - 让核心 1、5 各补到满载(需 3 + 1 = 4 个任务,刚好用完)。 - 此时 4 个核心满载。 - 得分 = 4 * 10 + 3 * 2 = 46。
时间限制 1000 ms · 内存限制 128 MB