宁波理工学院有好几个食堂,每当中午下课吃饭时,人会很多,每个同学的口味也可能不同,现有n同学要买自己喜欢吃的饭菜,已知每个同学买饭菜所需要的时间为ti,(0<i<=n),请求出一种排队次序,使每个同学买好饭菜的时间总和为最小。
Input
输入有多组测试数据,对于每一组测试数据,输入的第1行一个正整数n(n<=10000),第2行有n 个不超过 100的正整数ti,单位为秒. 数与数之间有空格。
Output
对于每一组测试数据,输出n个同学买好饭菜所需时间的总和的最小值。
Sample Input
4
5 9 6 7
Sample Output
61
#include<bits/stdc++.h>
using namespace std;
int main(){
int i,ti,n,sum,j;
vector<int>v;
while(cin>>n){
sum=0;
v.clear();
for(i=0;i<n;i++){
cin>>ti;
v.push_back(ti);
}
sort(v.begin(),v.end());
j=0;
for(i=n;i>0;i--){
sum += v[j++]*i;
}
cout<<sum<<"\n";
}
return 0;
}