Given a sorted array of integers and in the same array,shuffle the integers to have unique elements

Given a sorted array of integers and in the same array,shuffle the integers to have unique elements & fill the remaining spaces of the array with value '0'


#include <stdio.h>
#include <stdlib.h>
#define MAX 1000000
int main(void) {
 int n,i,*a,hash[MAX],x,j=0,index;
 scanf("%d",&n);
 memset(hash,0,sizeof(hash));
 a=(int*)malloc(sizeof(int)*n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&x);
  if(hash[x]==0)
  {
   a[j++]=x;
  }
  hash[x]=1; 
 }
 index=j-1;
 for(;j<n;j++)
  *(a+j)=0;
 for(i=0;i<n;i++)
  printf("%d ",*(a+i));
 printf("\n%d",index);
 return 0;
}