排队接水
n个人一起排队接水,第i个人需要bii的时间来接水。
1 <= n <= 1000
0 <= bii <= 1000
同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。
完成接水的人会立刻消失,不会继续等待。
你可以决定所有人接水的顺序,并希望最小化所有人等待时间的总和。
Input
第一行一个整数n
接下来n行,每行一个整数表示bii
Output
一行一个整数,表示所有人等待时间的总和的最小值
Sample Input
3 1 2 3
Sample Output
10
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n, t, i, j;
int a[10010];
scanf("%d", &n);
memset(a,0,sizeof(a));
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for(i = 0; i < n - 1; i++)
{
for(j = 0; j < n - 1 - i; j++)
{
if(a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
int sum = 0;
for(i = 0; i < n; i++)
{
sum = sum + (n - i) * a[i];
}
printf("%d\n", sum);
return 0;
}