#include <iostream>
#include <stack>
#include <cmath>
using namespace std;
int main(){
stack<int> s;
int n,d,a[100000];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
s.push(a[i]);
}
for(int i=1;i<n;i++){
if(pow(2,i)-1==n){
d = i;
break;
}
}
int res[1000]={0};
for(int i=d;i>=1;i--){
int num = pow(2,(i-1));
int sum = 0;
while(num){
sum += s.top();
s.pop();
num--;
}
res[i]=sum;
}
int tmp=1;
for(int i=2;i<=d;i++){
if(res[i]>res[i-1]){
tmp=i;
}
}
cout<< tmp <<endl;
return 0;
}
历届试题—完全二叉树的权值
最新推荐文章于 2022-04-02 21:17:02 发布