#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, k, x;
priority_queue<int, vector<int>, greater<int>> q1; // 从小到大排列的优先级队列
priority_queue<int> q2; // 从从大到小排列的优先级队列
cin>>n>>k;
for (int i = 0; i < n; i++){
cin>>x;
q1.push(x);
q2.push(x);
}
long long sum1 = 0, sum2 = 0;
while (q1.size()%(k-1)!=1){
q1.push(0);
}
while(q1.size() > 1){
long long sum = 0;
for (int i = 0; i < k; i++){
sum += q1.top();
q1.pop();
}
sum1 += sum;
q1.push(sum);
}
while(q2.size()>1){
long long sum = 0;
int a = q2.top();
q2.pop();
int b = q2.top();
q2.pop();
sum += (a+b);
sum2 += sum;
q2.push(sum);
}
cout<<sum2<<' '<<sum1<<endl;
return 0;
}
12-10
5814
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交