题目描述
有N个人排队到R个水龙头去打水,他们装满水桶的时间为T1,T2,…,Tn为整数且各不相等,应如何安排他们的打水顺序才能使他们花费的时间最少?
输入格式
输入文件共两行,第一行为n,r;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。
输出格式
一行,总共花费时间
样例
Sample Input
4 2 //4人打水,2个水龙头
2 6 4 5 //每个打水时间
Sample Output
23 //总共花费时间
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n,r;
cin>>n>>r;
int a[100];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
int tap[100];
memset(tap,0,sizeof(tap));
int j=1;
int sum=0;
for(int i=1;i<=n;i++)
{
if(j==r+1) j=1;
tap[j]+=a[i];
sum+=tap[j];
j++;
}
cout<<sum<<endl;
return 0;
}