Pagini recente » Cod sursa (job #2338703) | Cod sursa (job #553106) | Cod sursa (job #2511997) | Cod sursa (job #2526250) | Cod sursa (job #1222778)
# include <fstream>
# include <iostream>
# include <cstring>
using namespace std;
ifstream fi("xormax.in");
ofstream fo("xormax.out");
struct trie
{
int x;
trie *s[2];
trie()
{
s[0]=s[1]=NULL;
x=0;
}
};
trie *t=new trie;
const int nmax=100005;
int S[nmax];
bool d[25];
int read()
{
char c[30];
fi>>c;
int p=0,k=strlen(c);
for (int i=0;i<k;++i) p=p*10+c[i]-'0';
return (p);
}
int main(void)
{
S[0]=0;
int n=read(),Max=-1,p,u;
trie *f=t;
for (int i=1;i<22;++i) f->s[0]=new trie,f=f->s[0];
f->x=0;
for (int i=1;i<=n;++i)
{
S[i]=read()^S[i-1];
for (int j=1;j<22;++j) d[j]=(S[i] & (1<<(21-j)));
f=t;
for (int j=1;j<22;++j)
if (f->s[1-d[j]]) f=f->s[1-d[j]];else f=f->s[d[j]];
int x=f->x,v=S[i]^S[x];
if (Max<v) Max=v,u=i,p=x+1;
f=t;
for (int j=1;j<22;++j)
if (f->s[d[j]]) f=f->s[d[j]];else f->s[d[j]]=new trie,f=f->s[d[j]];
f->x=i;
}
fo<<Max<<" "<<p<<" "<<u<<"\n";
}