到底哪里错了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
ll w,h;//权值&高度
bool operator<(const node &x)const{return w!=x.w?x.w<w:x.h<h;}//结构体重载
};
priority_queue<node>q;//结构体优先队列
ll n,k,t,sum,mx,ssum=0,mmx=LONG_LONG_MIN;
int main(){
scanf("%lld %lld",&n,&k);
for(ll i=0;i<n;i++){
scanf("%lld",&t);
q.push((node){t,1});
}
if((n-1)%(k-1)!=0){//要补点!
t=n-1-(n-1)%(k-1);
for(ll i=0;i<t;i++)
q.push((node){0,1});
}
while(q.size()>1){//huffman树
sum=0,mx=LONG_LONG_MIN;
for(ll i=0;i<k;i++){
sum+=q.top().w;
mx=max(mx,q.top().h);
q.pop();
}
q.push((node){sum,mx+1});
ssum+=sum;//重新编码后的最短长度
mmx=max(mmx,mx);//最长的Si的最短长度
}
printf("%lld\n%lld",ssum,mmx);
return 0;
}