排队接水
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; }