题目描述
有 n 个人排队到 r 个水龙头前去打水,每个人装满水桶所需的时间为 t₁, t₂, ..., tₙ,这些时间均为整数且互不相等。
请你安排他们的打水顺序,使得所有人花费的总时间最少。
时间计算规则:
每个人的花费时间 = 排队等待时间 + 自己打水时间。
假设一个人打完水后,下一个人立即接上,切换过程不消耗时间。
示例说明:
有 2 个人 A 和 B,打水时间分别为 3 和 2,只有 1 个水龙头。
若 A 先打水,B 后打水:
- A 花费时间 = 0(排队)+ 3(打水)= 3
- B 花费时间 = 3(排队)+ 2(打水)= 5
- 总时间 = 3 + 5 = 8
若 B 先打水,A 后打水,总时间 = 2 + (2+3) = 7,更优。
输入格式
第一行两个整数 n 和 r,分别表示人数和水龙头个数。
第二行 n 个正整数 t₁, t₂, ..., tₙ,表示每个人打水所需的时间。
数据范围:
- 1 ≤ n ≤ 500
- 1 ≤ r ≤ 100
- 1 ≤ tᵢ ≤ 1000
输出格式
输出一个正整数,表示所有人花费的最少总时间。
样例输入
4 2
2 6 4 5
样例输出
23
提示
本题可使用贪心策略:
将打水时间从小到大排序,然后依次分配到当前等待时间最短的水龙头,即可使总等待时间最小。