Problem:
Set

数列a_1,a_2,..,a_Nが与えられます。

この数列に値は何種類ありますか。

入力

N
a_1 a_2...a_N

出力

数列の値の種類数を出力せよ。

制約

1 \leq N \leq 10^5

1 \leq a_i \leq 10^9

入力例

6
8 6 9 1 2 1

出力例

5

Solution in C (judge verdict: Accepted)

/*
A0647:set
 */
#include <stdio.h>
#include <stdlib.h>

int n,k,a[100001];

int comp( const void * a , const void * b ) {

  if( *( int * )a > *( int * )b ) {
    return 1;
  }
  else
  if( *( int * )a == *( int * )b ) {
    return 0;
  }
  return -1;
}


int main()
{
  int i,prev;
  int ret;
  scanf("%d",&n);

  for(i=0;i<n;i++)
    {
      scanf("%d",&a[i]);
    }
  qsort(a,n,sizeof(int),comp);
  prev=a[0];
  for(i=1,ret=1;i<n;i++)
  {
    if(a[i]!=prev)
      ret++;
    prev=a[i];
  }
  printf("%d\n",ret);
  return(0);
}