问题描述
有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少?
输入格式
第一行n,r (n<=500,r<=75)
第二行为n个人打水所用的时间Ti (Ti<=100);
输出格式
最少的花费时间
样例输入
3 2
1 2 3
样例输出
7
代码
#include<algorithm>
#include<iostream>
using namespace std;
int a[505], b[505];
int main() {
int n, r, sum=0;
cin >> n >> r;
for(int i=0; i<n; i++)
cin >> a[i];
sort(a, a+n);
for(int i=0; i<r; i++)
b[i] = a[i];
for(int i=r; i<n; i++)
b[i] = b[i-r] + a[i];
for(int i=0; i<n; i++)
sum += b[i];
cout << sum << endl;
return 0;
}