题目

image-1669289417813

题解

二叉树第i层有2^(i-1)次方个节点,所以遍历这这些节点即可

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,a[N];

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    int maxs=-1e8;
    int depth=0;
    for(int i=1,d=1;i<=n;i*=2,d++){
        long long s=0;
        for(int j=i;j<i+(1<<d-1)&&j<=n;j++)
            s+=a[j];
        if(s>maxs){
            maxs=s;
            depth=d;
        }
    }
    cout<<depth<<endl;
    return 0;
}