题目描述
知识点: 贪心
思路: 类似哈夫曼树那样合并就好了,不过每次合并的节点一定是最小的,不需要用堆维护,实现起来更简单。
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e4+10;
int a[N];
int main(){
int n;
cin>>n;
for(int i = 1;i <= n;i++) cin>>a[i];
double res = 0;
sort(a+1,a+n+1);
res = (a[1] + a[2]) / 2;
int k = 3;
while(k <= n){
res = (res + a[k++]) / 2.0;
}
printf("%d",(int)res);
return 0;
}