AcWing 1240. 非常简单清晰的双指针(幼儿园注释)
原题链接
简单
作者:
小金狐
,
2024-03-25 17:23:04
,
所有人可见
,
阅读 3
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10; //注意空间不要开太小
int a[N];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
long long max=a[1];
int dep=1,mindep=1; //当前深度和最小深度记录
for(int i=1,j=i;i<=n;i*=2){ //循环层数
long long temp=0; //记录当层最大值
while(j<=2*i-1){ //该层最右边节点
temp+=a[j];
j++;
}
if(max<temp){ //比较最大大小
mindep=dep; //相同最大值不考虑,所有不用判定
max=temp;
}
// cout<<temp<<" "<<dep<<endl; //测试用的
dep++;
}
cout<<mindep<<endl;
return 0;
}