@[Anythingispossible](/user/877829) 你操作是pop了两次,你不能保证堆里面的个数是大于等于2的,所以re了,wgile里的条件应该改成q.size()>=2
by _zzzzzzy_ @ 2023-12-03 11:03:59
只剩下一个元素的时候取不到堆顶,只有堆内元素大于等于2时才可以
by Scorilon @ 2023-12-03 11:04:02
@[Anythingispossible](/user/877829)
```cpp
#include <bits/stdc++.h>
#define ll long long
using namespace std;
priority_queue <ll,vector<ll>,greater<ll> > q;//greater less 别写错
ll n,ans;
int main(){
scanf("%lld",&n);
for(ll i=1;i<=n;i++){
int a;
scanf("%lld",&a);
q.push(a);
}
while(q.size()>1){
ll a=q.top();q.pop();
ll b=q.top();q.pop();
ans=ans+a+b;
q.push(a+b);
}
printf("%lld\n",ans);
return 0;
}
```
by kevinZ99 @ 2023-12-03 11:06:31
@[Scorilon](/user/448593) 过了\bx
by Anythingispossible @ 2023-12-03 11:11:47
@[_zzzzzzy_](/user/715244) 谢谢
by Anythingispossible @ 2023-12-03 11:12:38