Pagini recente » Cod sursa (job #1110401) | Cod sursa (job #2212786) | Cod sursa (job #2449131) | Cod sursa (job #1724605) | Cod sursa (job #1711982)
#include <stdio.h>
#include <string.h>
int q[24];int i, g, s, l;struct A{int u;A *f[2];A(){u=100000;f[0]=f[1]=0;}};A *T=new A;void y(A *o, int d){if(d<0)o->u=i;else{if(o->f[q[d]]==0)o->f[q[d]]=new A;y(o->f[q[d]], d-1);}}void z(A *o, int v, int d){if(d==-1){if(g<v){g=v;s=o->u;l=i;}}else{if(q[d]==0){if(o->f[1]!=0)z(o->f[1], v+(1<<d), d-1);else if(o->f[0]!=0)z(o->f[0], v, d-1);}else{if(o->f[0]!=0)z(o->f[0], v+(1<<d), d-1);else if(o->f[1]!=0)z(o->f[1], v, d-1);}}}int main(){int n;FILE*fi,*fo;fi=fopen("xorg.in","r");fo=fopen("xorg.out","w");fscanf(fi,"%d", &n);g=-1;i=0;y(T, 22);for(i=1;i<=n;i++){int x;fscanf(fi,"%d", &x);for(int 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", g, s+1, l);fclose(fi);fclose(fo);return 0;}