Pagini recente » Cod sursa (job #1916593) | Cod sursa (job #891) | Cod sursa (job #186425) | Cod sursa (job #2713507) | Cod sursa (job #1593323)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("xormax.in");
ofstream g("xormax.out");
int n,i,j,v[100001],trie[1<<22],pos,fsb[25],st=1,dr=1,rasp;
int main()
{
f>>n;
for(i=1;i<=n;++i)
{
f >> v[i];
v[i] ^= v[i-1];
for(j=20;j>=0;--j)
fsb[20-j]=v[i]&(1<<j)?1:0;
pos = 1;
for(j=0;j<=20;++j)
{
pos = pos<<1;
if(trie[pos|!fsb[j]])
pos = pos | !fsb[j];
else pos = pos | fsb[j];
}
if ((v[trie[pos]] ^ v[i]) > rasp)
{
rasp = v[trie[pos]] ^ v[i];
st = trie[pos] + 1;
dr = i;
}
pos = 1;
for(j=0;j<=20;++j)
{
pos = (pos<<1) | fsb[j];
trie[pos] = i;
}
}
g<<rasp << " " << st << " " << dr;
return 0;
}