题解
#include<iostream>
#include<algorithm>
using namespace std;
int a[100005];
long long maxn=-1e18;
int main()
{
long long n;
cin>>n;
int depth=1;
int ans=1;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i*=2)
{
long long s=0;
for(int j=i;j<=2*i-1&&j<=n;j++)
{
s+=a[j];
}
if(s>maxn)
{
maxn=s;
ans=depth;
}
depth++;
}
cout<<ans;
}
主要是用了这个规律:在完全二叉树中,第i层(根为1层)的第一个数为第2^(i-1)个数,最后一 个数为第2^i - 1个数
主要学习了下面这篇博客
蓝桥杯--历届真题 完全二叉树的权值【第十届】【省赛】【B组】_with_wine的博客-CSDN博客