一、理解题意
二、算法思路
三、实现代码
#include <bits/stdc++.h>
using namespace std;
//升序队列,小顶堆
priority_queue<int, vector<int>, greater<int>> q;
int res;
int main() {
//优化输入
ios::sync_with_stdio(false);
int n;
cin >> n;
while (n--) {
int x;
cin >> x;
q.push(x);
}
while (q.size() > 1) {
int a = q.top();
q.pop();
int b = q.top();
q.pop();
res += a + b;
q.push(a + b);
}
printf("%d
", res);
return 0;
}