题目描述
东大东门的外卖算是各位宅男的最爱,“哈同学,炒饭炒面••••”。不过外卖也有让人头疼的地方,比如说DG晚上7点订的炒面结果10点才到,这人DG十分不满送外卖的人的办事效率。作为一名资深2B宅男,DG有心要研究下送外卖究竟要花多少时间? DG向送外卖的人要来数据,有 n份外卖要送,送第i份所需的时间是ti。如果外卖可以按任意顺序送(但只能一份一份的送),则在最优的方式下,所有人的平均等待时间最少是多少?
输入
第一行输入一个整数n (1<=n<=100000)
第二行包括n个整数t1,t2…tn(1<=t<=1000)
当n==0时输入结束
输出
一个浮点数v(小数点后保留3位),表示所有人的平均等待时间的最小值
样例输入
2 1 2 0
样例输出
2.000
思路: 先送时间比较短的
C++输出小数点后三位 : cout<<setiosflags(ios::fixed)<<setprecision(3)<<time<<endl;
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
#define MAX 100005
int t[MAX];
int main()
{
int n;
while(cin>>n&&n){
for (int i=0;i<n;i++)
cin>>t[i];
sort(t,t+n);
int j=n;
long long sum=0;
for (int i=0;i<n;i++)
{
sum+=j*t[i];
j--;
}
double time=sum/(double)n;
cout<<setiosflags(ios::fixed)<<setprecision(3)<<time<<endl;
}
return 0;
}