Problem Z: STL 函数使用 —— unique()

Problem Z: STL 函数使用 —— unique()

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

【介绍】

【头文件】

Standard Template Library: Algorithms
#include<algorithm>

【作用】

Remove consecutive duplicates in range
Removes all but the first element from every consecutive group of equivalent elements in the range [first,last).
注意:STL 函数都是左闭右开。
equality (1)	
template <class ForwardIterator>
  ForwardIterator unique (ForwardIterator first, ForwardIterator last);
predicate (2)	
template <class ForwardIterator, class BinaryPredicate>
  ForwardIterator unique (ForwardIterator first, ForwardIterator last,
                          BinaryPredicate pred);


【任务】

我们通过本题,掌握 unique() 函数使用方法。
给一个长度为 $n$ 的数列,数列中可能有若干相同数据,从小到大输出不同数据。

Input

第一行一个整数 $n\ (1 \leq n \leq 5\times 10^5)$。
第二行包括 $n$ 个整数 $a_i\ (-10^9 \leq a_i \leq 10^9)$。

Output

第一行输出一个整数,表示数组 $a$ 包含多少个不同的数据 $m$
第二行包括 $m$ 个完全不同数据。

Sample 1 Input

9
10 20 20 20 30 30 20 20 10

Sample 1 Output

3
10 20 30

Sample 2 Input

5
5 4 3 2 1

Sample 2 Output

5
1 2 3 4 5