QAQ
题意明确,就是每次取两个最大值,和/k再放入堆中,循环n-1输出最后的元素即可
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
priority_queue<int> q;
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1,a;i<=n;i++)
scanf("%d",&a),q.push(a);
for(int i=1;i<=n-1;i++)
{
int sum1=q.top();
q.pop();
int sum2=q.top();
q.pop();
q.push((sum1+sum2)/k);
}
printf("%d",q.top());
return 0;
}