0
已解决
高子健
新手天翼
新手天翼
题目描述 Description
在河的这头,有n个人要过独木桥走到对岸,由于每个人的胆量不一样,有人过桥时走得很慢,有人走得很快。独木桥不是很稳固,因此同一时间只能有一个人在桥上。现在我们提前知道每个人过桥要花的时间,那么不管这n个人以什么次序过桥,花的总时间都是一样的,但是可以调整过桥次序使得所有人等待其他人过桥的时间之和最短,请你求出这个最短等待总时间。
输入描述 Input Description
输入一个正整数n(n<=100),
接下来一行,输入n个正整数,表示每个人的过桥时间。
输出描述 Output Description
输出最短的等待总时间。
样例输入 Sample Input
5 2 3 1 4 2
样例输出 Sample Output
17
数据范围及提示 Data Size & Hint
第一个人过桥不需要等待;第二个人需要等待第一个人过完桥;第三个人需要等待前两个人过完桥……
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[1005],sum=0,cnt=0;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
a[0]=0;
for(int i=1;i<=n;i++){
sum=cnt+a[i];
cnt+=sum;
}
cout<<sum;
}
考试题(补考)