题目描述
有n个人排队到m个水龙头去打水,他们装满水桶的时间t1, t2 , ……, tn为整数且各不相同,应如何安排他们的打水顺序才能使他们花费的总时间最少? 只有一组输入数据哦。
输入
4 2 ( n m )
2 6 4 5 (t1 t2 …… tn)
输出
23(所有人的花费时间总和)
样例输入
4 2 2 6 4 5
样例输出
23总是出现运行错误,思路很正确,不过还好终于过啦//AC
#include <stdio.h>
#include<algorithm>
using namespace std;
int cmp(int a, int b)
{
return a < b;
}
int main()
{
int n, m, i, sum = 0;
int a[1000], b[1000]; //总时间=每个人打水所用时间加等待时间
scanf("%d %d", &n, &m);
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort(a,a+n);
for(i = 0; i < m; i++) // 前m-1个水龙头 每个人等待的时间为0
{
b[i] = a[i];
}
for(i = m; i < n; i++) //开始出现循环,第m个人花费时间=个人打水时间加等待时间
{
b[i] = b[i - m] + a[i];
}
for(i = 0; i < n; i++)
{
sum += b[i];
}
printf("%d\n",sum);
return 0;
}