https://www.luogu.org/problem/P1090
#include<bits/stdc++.h> using namespace std; int n,b,j; priority_queue<int>s; //定义队列 int main() { cin>>n; for(int i=1; i<=n; i++) { cin>>b; s.push(-b);//因为优先队列自动排序后,是从大到小的,所以*-1后再压入队列,也就符合需求 最后再*-1 } for(int i=1; i<n; i++) { //循环n-1次 b=s.top();//弹出最小值 s.pop();//删除最小值 b+=s.top();//弹出第二小值 s.pop();//删除第二小值 s.push(b);//重新压入队列 j+=b;//计数 } cout<<j*-1;//输出-1*计数器 return 0;//结束代码 }