代码:
#include"stdio.h"
#include"string.h"
void quicksort(int a[],int start,int end){
int i=start,j=end;
const int pivot=a[(end-start)/2];
do{
while(a[i]<pivot)
i++;
while(a[j]>pivot)
j--;
if(i<=j){
int t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
}
}while(i<=j);
if(start<j)
quicksort(a,start,j);
if(end>i)
quicksort(a,i,end);
}
int main(void){
int n;
scanf("%d",&n);
int a[n],i;
bool buckets[1000];
memset(buckets,0,1000/*==sizeof(buckets)*/);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
if(buckets[a[i]-1])
a[i]=0;//做一个标记,在题目的范围之外
else
buckets[a[i]-1]=1;
quicksort(a,0,n-1);
for(i=0;a[i]==0/*0都被放在了最前面*/;i++){
//循环体为空
}
printf("%d\n",n-i);
for(int j=i;j<n;j++)
printf("%d ",a[j]);
return 0;
}