文章
9
粉丝
126
获赞
11
访问
51.7k
新手
#include <iostream>
using namespace std;
#include <queue>
#include <vector>
int main ()
{
int n, sum = 0, sum2 = 0;
scanf ("%d", &n);
priority_queue<int, vector<int>, greater<int> > q;//小根堆,升序排列
for (int i = 0; i < n; i++)
{
int x;
scanf ("%d", &x);
q.push(x) ;
}
while (!q.empty() )//循环条件:队列不空
{
if (sum != 0)//对初始条件进行判断
q.push(sum) ;
sum = q.top() ;
q.pop() ;
sum += q.top() ;//队首前两个元素之和
q.pop() ;
sum2 += sum;//累加
}
cout << sum2 << endl;
return 0;
}
登录后发布评论
暂无评论,来抢沙发