题目描述

有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;
}