//
// main.cpp
// 洛谷
//
// Created by Jalor on 2020/5/26.
// Copyright © 2020 Jalor. All rights reserved.
//
#include <iostream>
#include <map> //注意,STL头文件没有扩展名.h
#include <algorithm>
#include <cstdio>
using namespace std;
struct point{
int power,id;
};
point p[150],tree[600];
bool cmp(point a, point b){
return a.power<b.power;
}
void build_tree(int start,int end,int node){
if (start == end) {
tree[node] = p[start];
return ;
}
int mid = (start+end)/2;
int left_node = node*2;
int right_node = node * 2 + 1;
build_tree(start, mid , left_node);
build_tree(mid+1, end , right_node);
tree[node] = max(tree[left_node],tree[right_node],cmp);
}
int main() {
int n;
scanf("%d",&n);
for (int i = 1 ; i <= (1<<n); i++) {
scanf("%d",&p[i].power);
p[i].id = i;
}
build_tree(1,(1<<n),1);
// for (int i = 1 ; i < (1<<n)*4; i++) {
// printf("tree[%d]: id = %d , powder = %d\n",i,tree[i].id,tree[i].power);
// }
printf("%d",min(tree[2], tree[3], cmp).id);
return 0;
}
网友评论