Description
需要把不同机房的n个设备开机,一开始在电梯里,对每个设备,都需要移动到设备旁开机,然后回到电梯。
已知从电梯走到每个设备所需的时间(返回时间相同)。从 0 时刻起,到每个设备被开机的时间为该设备等待时间。求所有设备最小的总等待时间。电梯移动的时间忽略不计。
Input
每组数据第一行为设备数 1 ≤ n ≤ 1000,接下来 n 行每行一个距离 1 ≤ di ≤ 1000 表示电梯走到第 i 个设备的时间。
Output
所有设备最小的总等待时间。
Sample Input
3
2
1
5
Sample Output
16
Hint
先启动第 2 个设备,电梯走到该设备耗时 1,当前时间点为 1,该设备等待时间为 1
走回电梯,耗时 1,走到第 1 个设备耗时 2,当前时间点为 4,该设备等待时间为 4
走回电梯,耗时 2,走到第 3 个设备耗时 5,当前时间点为 11,该设备等待时间为 11
总耗时为 1+4+11=16
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int n, d[1100];
int main()
{
while(scanf("%d", &n) != EOF)
{
for(int i = 0; i < n; i ++)
scanf("%d", &d[i]);
sort(d, d + n);
int delay = 0;
long long ans = 0;
for(int i = 0; i < n; i ++)
{
delay += d[i];
ans += delay;
delay += d[i];
}
printf("%lld\n", ans);
}
return 0;
}