最优服务次序问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
设有n 个顾客同时等待一项服务。顾客i需要的服务时间为t
i,1≤i≤n。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的总和除以n。
对于给定的n 个顾客需要的服务时间,计算最优服务次序。
对于给定的n 个顾客需要的服务时间,计算最优服务次序。
输入
输入数据的第一行是正整数n(n≤1000),表示有n 个顾客。接下来的1行中,有n 个正整数,表示n 个顾客需要的服务时间。
输出
输出一个实数,保留2位小数,表示计算出的最小平均等待时间。
示例输入
10 56 12 1 99 1000 234 33 55 99 812
示例输出
532.00
#include<stdio.h>
int main()
{
int i,j,n,m,k,t,a[1000];
double b;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]>a[j])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
m=0;
for(i=0;i<n;i++)
m+=a[i]*(n-i);
b=1.0*m/n;
printf("%.2lf\n",b);
}