dfs打错了
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,v[1<<8];
int win[1<<8];
void dfs(int x){
if(x>=(1<<n)) return;
dfs(2*x);
dfs(2*x+1);
int lv=v[2*x];
int rv=v[2*x+1];
if(lv>rv){
v[x]=lv;
win[x]=win[2*x];
}else{
v[x]=rv;
win[x]=win[2*x+1];
}
}
int main(){
cin>>n;
for(int i=0;i<(1<<n);i++){
cin>>v[(1<<n)+i];
win[(1<<n)+i]=i+1;
}
dfs(1);
int num=(v[2]>v[3]?win[3]:win[2]);
cout<<num;
return 0;
}
```
by queenbee @ 2024-04-12 18:28:39
其实这个题直接求左边最大,再求右边最大,两个一比较,输出较小值的下表就可以,@[queenbee](/user/789564) 他是我同学,我下午讲课讲了这道题,@[queenbee](/user/789564) 你没听课,举报了(doge
by Jason__Wang @ 2024-04-12 18:37:41
@[queenbee](/user/789564) @[Jason__Wang](/user/1110117) 谢啦
by lucy2012 @ 2024-04-12 18:38:29