题目描述
题目分析
我们以每一个节点的坐标来将这一深度的权值之和相加从而算出权值和
要清楚每一个深度的其实节点和末尾节点,使用双指针将这个深度节点的权值和计算出来,记录所
需要的深度即可
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int maxx = -2e5 + 10;
int a[N];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i ++)cin >> a[i];
int depth = 0;
for(int i = 1, d = 1; i <= n; i *= 2, d ++)
{
ll sum = 0;
for(int j = i; j <= 2 * i - 1; j ++)
{
sum += a[j];
}
if(sum > maxx)
{
maxx = sum;
depth = d;
}
}
cout << depth << '\n';
return 0;
}