思路:
双指针算法
代码:
# include<iostream>
# include<cstdio>
# include<cstring>
# include<algorithm>
using namespace std;
typedef long long LL;
const int N = 100010;
int a[N];
int n;
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i++)
{
scanf("%d",&a[i]);
}
int depth = 0;
LL maxn = -1e18;
for(int i = 1,d = 1;i <= n;i *= 2,d++)
{
LL s = 0;
for(int j = i;j < i + (1 << d - 1) && j <= n;j++)
{
s += a[j];
}
if(s > maxn)
{
maxn = s;
depth = d;
}
}
printf("%d",depth);
return 0;
}