Cod sursa(job #2327614)

Utilizator MAXIMILLIANMUSOHYEAHYEAH MAXIMILLIANMUS Data 24 ianuarie 2019 19:37:30
Problema Xor Max Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
int q[24],i,j,max,st,fin,n,x;struct A{int c;A *fii[2];A(){c=100000;fii[0]=fii[1]=0;}};A *T=new A;void y(A *b, int ind){if(ind<0)b->c=i;else{if(b->fii[q[ind]]==0)b->fii[q[ind]]=new A;y(b->fii[q[ind]], ind-1);}}void z(A *b, int val, int ind){if(ind==-1){if(max<val){max=val;st=b->c;fin=i;}}else{if(q[ind]==0){if(b->fii[1]!=0)z(b->fii[1], val+(1<<ind), ind-1);else if(b->fii[0]!=0)z(b->fii[0], val, ind-1);}else{if(b->fii[0]!=0)z(b->fii[0], val+(1<<ind), ind-1);else if(b->fii[1]!=0)z(b->fii[1], val, ind-1);}}}int main(){FILE*fi,*fo;fi=fopen("xormax.in","r");fo=fopen("xormax.out","w");fscanf(fi,"%d",&n);max=-1;i=0;y(T,22);for(i=1;i<=n;i++){fscanf(fi,"%d",&x);for(j=0;j<=22;j++){q[j]=(q[j]^(x%2));x/=2;}z(T, 0, 22);y(T, 22);}fprintf(fo,"%d %d %d",max,st+1,fin);return 0;}