题目描述
输入
输出
样例输入1
3
1 2 9
样例输出1
15
做法1
#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; /* 默认的PQ是从大到小弹出的 我们重载小于号为greater<int> 即从小到大弹出 */ priority_queue<int, deque<int>, greater<int>> pq; while (n--) { int tmp; cin >> tmp; pq.push(tmp); } int ans = 0; /* 最后一个元素不参与合并 */ while (pq.size() > 1) { int t1 = pq.top(); pq.pop(); int t2 = pq.top(); pq.pop(); ans += t1 + t2; pq.push(t1 + t2); } cout << ans << endl; return 0; }