Pagini recente » Cod sursa (job #536186) | Cod sursa (job #1956203) | Cod sursa (job #308880) | Cod sursa (job #1046417) | Cod sursa (job #3317811)
#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 it=1;it<=n;++it){
fin>>x;ix^=x;v[it]=ix;
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=it;
Nod*q=rad;
for(int i=20;i>=0;--i){int b=(ix>>i)&1,inv=b^1;if(q->ch[inv])q=q->ch[inv];else q=q->ch[b];}
int j=q->ind;
if((v[it]^v[j])>rez){rez=v[it]^v[j];st=j+1;dr=it;}}
fout<<rez<<" "<<st<<" "<<dr;
}