Description
设有 n 个顾客同时等待一项服务, 顾客 i 需要的服务时间为 ti, (1 ≤ i ≤ n). 应如何安排 n 个顾客的服务次序才能使平均等待时间达到最小? 平均等待时间是 n 个顾客等待服务时间的总和除以 n.
对于给定的 n 个顾客需要的服务时间, 请计算最优服务次序.
Input
有多个测试用例. 每个测试用例的第一行是正整数 n, 表示有 n 个顾客, 接下来的一行中有 n 个正整数, 表示 n 个顾客需要的服务时间.
输入直至没有数据为止.
Output
对于每个测试用例, 在一行上输出最小平均等待时间, 精确到小数点后两位.
Sample Input
10
56 12 1 99 1000 234 33 55 99 812
Sample Output
532.00
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
double a[2000]; //2000是从WA10的教训中试出来的,1000就不行
int main(){
int n,i;
while(cin>>n){
double sum;
for(i=0;i<n;i++){
scanf("%lf",a+i);
}
std::sort(a,a+n);
sum = (float)a[0];
for(i=1; i<n; i++){
a[i] += a[i-1];
sum += a[i];
}
sum /= n;
printf("%.2lf\n",sum);
}
system("pause");
return 0;
}