Pagini recente » Cod sursa (job #1997851) | Cod sursa (job #713314) | Cod sursa (job #1521454) | Cod sursa (job #2785252) | Cod sursa (job #2837845)
#include <bits/stdc++.h>
using namespace std;
ifstream in("xormax.in");
ofstream out("xormax.out");
const int lim=1e5+4;
int f[(1<<21)+3];
int v[lim];
int r[lim];
int n;
int main()
{
in>>n;
for(int i=2;i<=n+1;++i)
in>>v[i],
v[i]=(v[i-1]^v[i]);
int ans=0;
for(int b=20;b>=0;--b)
{
f[0]=1;
ans+=(1<<b);
bool found=false;
for(int i=2;i<=n+1;++i)
{
if(v[i]&(1<<b))
r[i]+=(1<<b);
if(f[(ans^r[i])])
found=true;
f[r[i]]=i;
}
for(int i=1;i<=n+1;++i)
f[r[i]]=0;
if(!found)
ans-=(1<<b);
}
f[0]=1;
for(int i=2;i<=n+1;++i)
{
if(f[(ans^v[i])])
{
out<<ans<<' '<<f[(ans^v[i])]<<' '<<i-1<<'\n';
return 0;
}
f[v[i]]=i;
}
return 0;
}