代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin>>n;
double a[n];
for(int i=0; i<n; i++){
cin>>a[i];
}
sort(a, a+n);
for(int i=0; i<n; i++){
int tmp1 = a[i];
int tmp2 = a[i+1];
a[i+1] = (tmp1+tmp2)/2;
}
cout<<(int)a[n-1]<<endl;
return 0;
}
注解
1、准确理解题目意思是关键。对折后成为另一条绳子,所以长度减半。要想绳子最终长度最大,等价于将绳子长度排序,从小到大依次折半(这样才能使损失的长度最小),最终得到的绳子是最大长度的。