小慕正在管理一个功能强大的计算集群,用于处理一批紧急的项目任务。这些任务按照不同的类型被分成了若干类,每一类都有一定数量的任务。现在,小慕需要将这些任务分配到集群中的多台服务器上,每台服务器只能处理一种类型的任务。一台服务器可以处理多个同类型的任务,但不同类型的任务不能放在同一台服务器上。 为了保证集群稳定运行,小慕引入了和的概念: - 负载是指每台服务器上分配的任务数量。如果某台服务器没有分配任何任务,则其负载为0。 - 最高负载是所有服务器中负载的最大值。 在分配任务时,小慕希望找到一个方案,使得最高负载尽可能小。你需要设计一个算法,计算并返回这个最小的最高负载值。
提示:带虚线的词点一下有通俗解释。
输入描述
- 第一行一个整数`serverNum`,表示集群中服务器的数量 (`1 <= serverNum <= 10^9`)。 - 第二行一个整数`taskTypeNum`,表示这批任务的类型数 (`1 <= taskTypeNum <= 100000`,且 `taskTypeNum <= serverNum`)。 - 第三行输入`taskTypeNum`个整数,表示任务数组`task`,其中`task[i]`表示该类型任务的数量 (`1 <= task[i] <= 10^9`)。
输出描述
输出一个整数,表示所有服务器分配任务后**最高负载**的最小值。
示例
示例 1
输入
7 4 10 20 15 5
输出
10
说明:在这个样例中,魔法集群包含7台服务器,任务有4种类型,分别是10个、20个、15个和5个。通过合理的分配,每台服务器的负载可以做到最小的最高负载为10。 此时分配的服务器台数分别是`[1, 2, 2, 1]`。
时间限制 1000 ms · 内存限制 128 MB