版本1
这道题利用了哈夫曼树的性质,但是类型是double型的。
输出结果的时候,是向下取整。
#include <cstdio>
#include <cmath>
#include <iostream>
#include <string>
#include <vector>
#include <cstring>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
int main(){
int n;
priority_queue<double, vector<double>, greater<double> > q;
cin>>n;
double x;
for(int i = 0; i < n; i++){
scanf("%lf", &x);
q.push(x);
}
while(q.size() > 1){
double a = q.top();
q.pop();
double b = q.top();
q.pop();
double temp = a/2.0 + b/2.0;
q.push(temp);
}
printf("%d\n", int(q.top()));
return 0;
}