[蓝桥杯][2019年第十届真题]完全二叉树的权值

水题~。

注意权值和可能会爆int。

const int N=1e5+10;
int val[N];
LL sum[N];
int n;
int maxd;

void dfs(int u,int d)
{
    if(u > n) return;

    maxd=max(maxd,d);
    sum[d]+=val[u];
    dfs(u*2,d+1);
    dfs(u*2+1,d+1);
}

int main()
{
    cin>>n;

    for(int i=1;i<=n;i++) cin>>val[i];

    dfs(1,1);
    
    int idx=1;
    for(int i=1;i<=maxd;i++)
        if(sum[i] > sum[idx])
            idx=i;
    cout<<idx<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-03-28 21:05  Dazzling!  阅读(112)  评论(0编辑  收藏  举报