100
#S0401P2. 小杨有序去重

小杨有序去重

题目描述

小杨有一份非降序排列的成绩单(相邻可能相等)。为了做分布统计,需要把连续的重复成绩压成一份,得到「出现过的不同成绩」列表(保持非降序)。

请用双指针在数组上原地完成去重:慢指针 jj 指向已保留部分的末尾,快指针 ii 向后扫描,遇到 ai≠aja_i \ne a_j 时就把 aia_i 复制到 aj+1a_{j+1}。

输出两行:去重后的成绩列表;不同成绩的个数。

输入格式

第一行一个整数 nn。

第二行 nn 个非降序整数 a1,…,ana_1, \dots, a_n,用空格隔开。

输出格式

两行:第一行是去重后的列表(用空格隔开);第二行是个数。

数据范围

  • 1≤n≤1051 \le n \le 10^5
  • 1≤ai≤1091 \le a_i \le 10^9,保证 a1≤a2≤⋯≤ana_1 \le a_2 \le \dots \le a_n

样例 #1

7
1 2 2 3 3 3 5
1 2 3 5
4

样例 #2

5
4 4 4 4 4
4
1