问题描述:
有 n 个人打水,只有 m 个水龙头,每个人打水所用的时间是 Ti,请找出合理的方案使得所有人的等
待时间之和最小。
数据范围:
n<=1000 m<=1000 Ti<=1000
输入格式:
9 1
9 8 7 6 5 4 3 2 1
输出格式:
120
源代码:
#include <stdio.h>
#define MAX 1000
int main(){
int n,m;
int i, j, t, s = 0;
int a[MAX], b[MAX];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) scanf("%d",&a[i]);
/* 排 序 */
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i=0;i<m;i++) b[i] = a[i];
for(i=m;i<n;i++){
b[i] = b[i-m] + a[i];// 总时间 = 等待 + 接水
s += b[i-m];
}
printf("%d\n",s);
return 0;
}