Problem:
Score : 300 points

Problem Statement

Given is a sequence of integers A_1, A_2, ..., A_N.
If its elements are pairwise distinct, print YES; otherwise, print NO.

Constraints

2 ≤ N ≤ 200000

1 ≤ A_i ≤ 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 ... A_N

Output

If the elements of the sequence are pairwise distinct, print YES; otherwise, print NO.

Sample Input 1

5
2 6 1 4 5

Sample Output 1

YES

The elements are pairwise distinct.

Sample Input 2

6
4 1 3 1 6 2

Sample Output 2

NO

The second and fourth elements are identical.

Sample Input 3

2
10000000 10000000

Sample Output 3

NO

Solution in C (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>
#include <stdlib.h>

void swap( int* a, int* b ){
    int temp = *a;
    *a = *b;
    *b = temp;
}

void quick_sort( int value[], int left, int right ){
    int i;
    int pivot;
    int Left = left, Right = right;
    pivot = value[ ( left + right ) / 2 ];

    while( 1 ){
        while( pivot > value[ Left ] ){
            Left++;
        }

        while( value[ Right ] > pivot ){
            Right--;
        }

        if( Left >= Right ){
            break;
        }
        swap( &value[Left], &value[Right] );
        Left++;
        Right--;
    }
    if( left < Left - 1 ){
        quick_sort( value, left, Left-1 );
    }

    if( right > Right + 1 ){
        quick_sort( value, Right + 1 , right );
    }
}

int main(void){
    char *result = "YES";
    int n = 0;
    int i, j;
    int value[210000];

    //
    scanf( "%d", &n );
    for( i = 0; i < n ; i++ ){
        scanf( "%d", &value[i] );
    }
    //
    quick_sort( value, 0, n-1 );

    for( i = 0 ; i < n - 1 ; i++ ){
        if( value[ i ] == value[ i + 1 ] ){
            result = "NO";
        }
    }

    printf( "%s", result );

    return 0;
}