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)

#include <bits/stdc++.h>
using namespace std;
#define P pair<int,int>
#define int long long
#define rep(i,n) for(int i=0;i<n;i++)
#define re(i,k,n) for(int i=k;i<n;i++)
#define mod 1000000007;
//最大公約数
int gcd(int s,int b){
    if(b==0)return s;
    return gcd(b,s%b);
}
signed main(){
    int n;
    cin>>n;
    int a[n];
    rep(i,n){
        cin>>a[i];
    }
    sort(a,a+n);
    int ans=0;
    rep(i,n-1){
       if(a[i]==a[i+1]){
           ans++;
       } 
    }
    cout<<n-ans<<endl;
}