Pagini recente » Cod sursa (job #52047) | Cod sursa (job #3321763) | Cod sursa (job #974285) | Cod sursa (job #1902501) | Cod sursa (job #3317812)
#include<fstream>
using namespace std;
ifstream fin("xormax.in");
ofstream fout("xormax.out");
int v[100005];
struct Nod{int ind;Nod*ch[2];Nod():ind(0),ch{}{}};
int main(){
int n,x,ix=0,rez=0,st=1,dr=1;fin>>n;Nod*rad=new Nod();Nod*nod=rad;
for(int i=20;i>=0;--i){int b=(ix>>i)&1;if(!nod->ch[b])nod->ch[b]=new Nod();nod=nod->ch[b];}nod->ind=0;
for(int i=1;i<=n;++i){
fin>>x;ix^=x;v[i]=ix;
nod=rad;for(int b=20;b>=0;--b){int bit=(ix>>b)&1;if(!nod->ch[bit])nod->ch[bit]=new Nod();nod=nod->ch[bit];}nod->ind=i;
Nod*q=rad;for(int b=20;b>=0;--b){int bit=(ix>>b)&1,inv=bit^1;if(q->ch[inv])q=q->ch[inv];else q=q->ch[bit];}
int j=q->ind;if((v[i]^v[j])>rez){rez=v[i]^v[j];st=j+1;dr=i;}}
fout<<rez<<" "<<st<<" "<<dr;
}