506. 排队打水
时间限制:1000 MS 内存限制:64 MB
题目描述
# 排队打水 ## 题目描述 有 $n$ 个人需要到同一个水龙头处打水,第 $i$ 个人装满水桶所需的时间是 $t_i$。水龙头同一时刻只能供一个人打水。 每个人的等待时间是从开始打水前,等待其他人打水所花费的时间,不包括自己打水的时间。排在第一位的人的等待时间为 $0$。 请安排这 $n$ 个人的打水顺序,使所有人的等待时间之和最小,并求出这个最小值。 ## 输入格式 从文件 `water.in` 中读入数据。 第一行包含一个整数 $n$,表示人数。 第二行包含 $n$ 个整数 $t_1,t_2,\ldots,t_n$,其中 $t_i$ 表示第 $i$ 个人装满水桶所需的时间。 ## 输出格式 将结果输出到文件 `water.out` 中。 输出一个整数,表示所有人的等待时间之和的最小值。 ## 数据范围 - $1 \le n \le 10^5$。 - $1 \le t_i \le 10^4$。 ## 样例输入 ``` 7 3 6 1 4 2 5 7 ``` ## 样例输出 ``` 56 ``` ## 样例说明 按照打水用时 $1,2,3,4,5,6,7$ 的顺序安排,所有人的等待时间依次为 $0,1,3,6,10,15,21$,其总和为 $56$。 ## 资源限制 - 时间限制:$1000$ 毫秒。 - 内存限制:$64$ MB。