123344
yang_zhiyu
2023-10-21 11:41:17
#include <iostream>
using namespace std;
const long long maxlenghth=(1<<20)+10;
int a[maxlenghth];
struct Ans
{
int val,id;
};
Ans ans[maxlenghth];
Ans solove(int l,int r)
{
if(l>=r)
{
Ans tem;
tem.val = ans[l].val, tem.id=l;
return tem;
}
Ans ans1=solove(l,(l+r)/2);
Ans ans2=solove((l+r)/2+1,r);
if(ans1.val>ans2.val)
{
Ans tem1;
tem1.val = ans1.val^ans2.val, tem1.id=ans1.id;
return tem1;
}
else
{
Ans tem2;
tem2.val = ans2.val^ans1.val, tem2.id=ans2.id;
return tem2;
}
}
int main()
{
int k;
cin>>k;
const int n=(1<<k);
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<solove(0,n-1).id+1<<endl;
return 0;
}