题解
借用线段树思路递归得到最终解。
特别注意 在求解右子结点的时候(now<<1)+1记得加括号,不然会编译成now<<(1+1)。
AC代码
#include<bits/stdc++.h>
using namespace std;
struct Node{
int id,pow;
}tree[600];
void build(int now,int l,int r){
if(l==r){cin>>tree[now].pow;tree[now].id=l;return;}
int mid=(l+r)>>1;
build(now<<1,l,mid);
build((now<<1)+1,mid+1,r);
tree[now]=tree[now<<1].pow>tree[(now<<1)+1].pow?tree[now<<1]:tree[(now<<1)+1];
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int h;
cin>>h;
build(1,1,1<<h);
cout<<(tree[2].pow<tree[3].pow?tree[2].id:tree[3].id)<<endl;
return 0;
}