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;
}