题目描述
![题目](https://i-blog.csdnimg.cn/blog_migrate/880153e7b8ca79ebe23bc3fa74d5571d.png)
注意问题
主要注意树中会出现负权制,因此初始化mmax时需要考虑一下
解题代码
#include <iostream>
using namespace std;
int a[1000005];
long long sum = 0;
long long mmax = 0;
int mark;
int main(int argc, const char * argv[]) {
int n;
cin >> n;
for(int i = 1; i <= n; i++)
cin >> a[i];
long long i = 1; //当前深度的起始下标
long long j = 2; //当前深度的结束下标
int root = 1; //当前深度
while(i <= n){
sum = 0;
//统计当前深度的权制
for(;i < j; i++){
sum += a[i];
}
//统计当前深度的权制
if(root == 1 || mmax < sum){
mmax = sum;
mark = root;
}
i = j;
j = j * 2;
root ++;
}
cout << mark << endl;
return 0;
}