Pagini recente » Cod sursa (job #2961952) | Cod sursa (job #839780) | Cod sursa (job #1738755) | Cod sursa (job #202122) | Cod sursa (job #1593318)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("xormax.in");
ofstream g("xormax.out");
int n,i,j,v[100001],trie[1<<21],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;
}