完全二叉树不等于满二叉树
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
typedef long long LL;
const int N=1e5+10;
const LL INF=2147483648;
LL a[N];
LL w[N];
LL maxv=-INF;
int get(int t)
{
return 1<<t;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
a[i]+=a[i-1];
}
for(int i=1;i<=(int)log2(n)+1;i++)
{
int l=get(i-1);
int r=get(i)-1;
r=min(r,n);
w[i]=a[r]-a[l-1];
maxv=max(w[i],maxv);
}
for(int i=1;i<=(int)log2(n)+1;i++)
{
if(w[i]==maxv)
{
cout<<i<<endl;
break;
}
}
return 0;
}