Optimal Services
设有n 个顾客同时等待一项服务。顾客i需要的服务时间为t i, 1<=i<=n 。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的总和除以n。
对于给定的n个顾客需要的服务时间,编程计算最优服务次序。
输入
第一行是正整数n,表示有n 个顾客。接下来的1行中,有n个正整数,表示n个顾客需要的服务时间。
输出
最小平均等待时间
样例输入
10
56 12 1 99 1000 234 33 55 99 812
样例输出
532.00
本题思路在于先将各个顾客的服务时间升序排列,然后计算出总服务时间,每服务一个人,其他剩下的人等待时间就应该加被服务人的服务时间。算出总时间后除n就是平均时间。
#include <stdio.h>
int main ()
{
int n;
scanf("%d",&n);
int i,j;
float sum = 0;
int time[10000];
for(i = 0;i < n;i++)
{
scanf("%d",&time[i]);
}
int t;
for(j = 0;j < n - 1;j++)
{
for(i = j + 1;i < n;i++)
{
if (time[j] > time [i])
{
t = time[j];
time[j] = time[i];
time[i] = t;
}
}
}
for (i = 0;i < n;i++)
{
sum = sum + time[i]*(n - i);
}
printf("%1.2f\n",sum/n);
return 0;
}