#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
using namespace std;
typedef long long int LL;
const int MAX = 1010, INF = 1<<30;
int N, X;
priority_queue<int, vector<int>, greater<int> > Q;//优先队列
int main()
{
scanf("%d", &N);
for(int i=0; i<N; i++)
{
scanf("%d", &X);
Q.push(X);
}
while(Q.size() > 1)//哈夫曼树思想
{
int A = Q.top();
Q.pop();
int B = Q.top();
Q.pop();
Q.push((A+B)/2);
}
printf("%d\n", Q.top());
return 0;
}
PAT (Advanced Level) Practice A1125 Chain the Ropes (25 分)(C++)(甲级)(哈夫曼树、优先队列)
最新推荐文章于 2021-05-11 20:06:26 发布