试题G——完全二叉树的权值

试题G——完全二叉树的权值

问题描述】 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1 , A2 , ··· AN ,如下图所示: 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。 注:根的深度是 1。 【输入格式】 第一行包含一个整数 N。 第二行包含 N 个整数 A 1 , A 2 , ··· A N 。 【输出格式】 输出一个整数代表答案。 【样例输入】 7 1 6 5 4 3 2 1 【样例输出】 2 【评测用例规模与约定】 对于所有评测用例,1 ≤ N ≤ 100000,−100000 ≤ A i ≤ 10

#include<bits/stdc++.h>
using namespace std;
typedef long long l;
int main()
{
    
    
 int n,x;
 cin>>n;
 l maxv=INT_MIN;
 l maxv_d=0;
 for(int i=0,length=1,depth=1;i<n;depth++,length*=2){
    
    
  l sum=0;
  for(int j=0;j<length&&i<n;j++,i++){
    
    
   cin>>x;
   sum+=x;
  }
  if(sum>maxv){
    
    
   maxv=sum;
   maxv_d=depth;
  }
 } 
 cout<<maxv_d;
 return 0;
}

猜你喜欢

转载自blog.csdn.net/xuexiwd/article/details/115308075
今日推荐