Pagini recente » Diferente pentru problema/alinieri intre reviziile 4 si 3 | Cod sursa (job #2745795) | Cod sursa (job #844224) | Cod sursa (job #2745796) | Cod sursa (job #3317813)
#include<fstream>
using namespace std;
ifstream fin("xormax.in");
ofstream fout("xormax.out");
int v[100005],n,x,ix=0,rez=0,st=1,dr=1,i,j,bit,inv;
struct Nod{int ind;Nod*ch[2];Nod():ind(0),ch{}{}};
int main(){
Nod*rad=new Nod();Nod*nod=rad;
for(i=20;i>=0;--i){bit=(ix>>i)&1;if(!nod->ch[bit])nod->ch[bit]=new Nod();nod=nod->ch[bit];}nod->ind=0;
fin>>n;
for(i=1;i<=n;++i){
fin>>x;ix^=x;v[i]=ix;
nod=rad;for(j=20;j>=0;--j){bit=(ix>>j)&1;if(!nod->ch[bit])nod->ch[bit]=new Nod();nod=nod->ch[bit];}nod->ind=i;
Nod*q=rad;for(j=20;j>=0;--j){bit=(ix>>j)&1;inv=bit^1;if(q->ch[inv])q=q->ch[inv];else q=q->ch[bit];}
j=q->ind;if((v[i]^v[j])>rez){rez=v[i]^v[j];st=j+1;dr=i;}}
fout<<rez<<" "<<st<<" "<<dr;
}