这样是可以通过测试的,我感觉会不会是用例时候是多线程的缘故,n被改变的原因,目前知识猜测
```c
#include<bits/stdc++.h>
using namespace std;
int v[260],w[260],n;
void dfs(int x,int n)
{
if(x >= 1 << n)
return;
else
{
dfs(x + x,n);
dfs(x + x + 1,n);
int lv = v[2 * x],rv = v[2 * x + 1];
if(lv > rv)
{
v[x] = lv;
w[x] = w[2 * x];
}
else
{
v[x] = rv;
w[x] = w[2 * x + 1];
}
}
}
signed main()
{
cin >> n;
for(int i = 0;i < 1 << n;i++)
{
cin >> v[i + (1 << n)];
w[i + (1 << n)] = i + 1;
}
dfs(1,n);
int res = (v[2] > v[3]) ? w[3] : w[2];
// for(int i = 0;i < 1 << (n + 1);i++)
// {
// cout << v[i] << " ";
// }
// cout<<endl;
// for(int i = 0;i < 1 << (n + 1);i++)
// {
// cout << w[i] << " ";
// }
// cout<<endl;
cout << res;
return 0;
}
```
by congege @ 2023-05-21 22:21:13