试题 G: 完全二叉树的权值
 时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分
 【问题描述】 给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1, A2, ··· AN,如下图所示:
 现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。 注:根的深度是 1。
 【输入格式】
 第一行包含一个整数 N。 第二行包含 N 个整数 A1, A2, ··· AN 。
 【输出格式】
 输出一个整数代表答案。
 【样例输入】
7
1 6 5 4 3 2 1【样例输出】
2【评测用例规模与约定】
 对于所有评测用例,1≤ N ≤100000,−100000≤ Ai ≤100000。
void myfun()
{
  
  int array[]={1, 6 ,5 ,4 ,3 ,2 ,1,16};
  int arraySize=sizeof(array)/sizeof(int);
  int max_num=0;
  int flow=0;
  int i=0;
  int index=0;
  int count=0;
  int deepth=0;
  while(1)
  { 
    int tempsum=0;
    int loop=pow(2,flow);
    int len=pow(2,flow++)-1;
    
  
    for(i=0;i<loop;i++)
    {
      tempsum+=array[len+i];
      count++;
      if((len+i)==sizeof(array)/sizeof(int)-1)
        break;  
    }
    cout<<"tempsum="<<tempsum<<endl;
    if(max_num<tempsum)
    { 
      max_num=tempsum;
      deepth=flow;
    }
    if(count==sizeof(array)/sizeof(int))
    {
      break;
    }
  }
  cout<<"deepth"<<deepth<<endl;
  
  
}                
                










