Quick actions

cmd+k|ctrl+k

Navigation

Languages

titled

Snippet info

Language

C

Visibility

public

Author

sriram

Created

2023-11-15T04:40:21.843122Z

Updated

2023-11-15T04:40:21.843122Z

#include<stdio.h>
#include<stdlib.h>
struct node 
{
	struct node*p[2];
};

struct node *root=NULL,*t,*t1;
struct node *createnode()
{
	t1=(struct node *)malloc(sizeof(struct node));
	t1->p[0]=NULL;
	t1->p[1]=NULL;
}
void insert(int k)
{
	t=root;int i,b;
	for(i=3;i>=0;i--)
	{
		b=(k>>i)&1;
		if(t->p[b]==NULL)
		{
			t->p[b]=createnode();
			
		}
		t=t->p[b];
	}
	
}

int maxxor(int k)
{
	int res=0,i,b;
	t=root;
	for(i=3;i>=0;i--)
	{
		b=(k>>i)&1;
		if(t->p[b^1]==NULL)
		t=t->p[b];
		else
	    {
	    	res=res+(1<<i);
	    	t=t->p[b^1];
		}
		
	}
	return res;
}

int main()
{
	int n,a[10],i,r,r1=-1;
	root=createnode();
    printf("Enter n value");
    scanf("%d",&n);
	printf("Enter %d integers",n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	
	
		insert(a[i]);
        r=maxxor(a[i]);
        if(r>r1)
          r1=r;
                
		//printf("%d  ",r1);		
		
	}
//	printf("Inserted");
printf("%d  ",r1);
	
}
INFO