【输入格式】
第一行包含一个整数 N。
第二行包含 N 个整数 A 1 , A 2 , ··· A N 。
【输出格式】
输出一个整数代表答案。
【样例输入】
7
1 6 5 4 3 2 1
【样例输出】
2
#include<bits/stdc++.h>
using namespace std;
long long a[10000];//储存个深度的节点权值和
int main(void){
int n; // 节点数N
int x; // 暂时储存节点权值
int i,j; // 循环变量
long long sum=0;//该深度完全二叉树的满二叉树节点总数
//多的节点权值为零
cin >>n; //输入节点数
getchar();//截取回车
for(i=0; sum<n; i++){//当节点数>=n时结束循环
for(j=1; j<=pow(2,i); j++){//满二叉树
if(sum+j<=n){
cin >> x; //输入权值
}else{
x=0; //多余节点权值为零
}
a[i]+=x; //统计该层权值和
}
sum += --j; //计算满二叉树的节点数
}
long long max=0;//储存最大值
int w; //最大值编号
for(int t=0; t<i; t++){
if(a[t]>max){
max = a[t];
w = t;
}
}
cout << ++w << endl;//编号+1为层数
return 0;
}