http://ac.jobdu.com/problem.php?id=1167
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
struct s
{
int num;
int dup;
}
a[10001];
int b[10002];
int cmp(const void *s1,const void *s2)
{
int *c,*d;
c = (int *)s1;
d = (int *)s2;
return *c-*d;
}
int main(int argc, char* argv[])
{
int i,j,k;
int n;
int num;
while(scanf("%d",&n) != EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&num);
a[i].num = num;
a[i].dup = 0;
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i].dup == 0)
{
if(a[j].num == a[i].num && a[j].dup == 0)
a[j].dup = 1;
}
}
}
k = 0;
for(i=0;i<n;i++)
{
if(a[i].dup == 0)
b[k++] = a[i].num;
}
qsort(b,k,sizeof(int),cmp);
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
{
if(a[i].num == b[j] && i < n-1)
{
printf("%d ",j+1);
break;
}
else if(a[i].num == b[j] && i == n-1)
{
printf("%d\n",j+1);
break;
}
}
}
}
return 0;
}