#P1671. 2024.02.25-360春招第一题-中间的数

2024.02.25-360春招第一题-中间的数

题目描述

  你有一个长度为m的正整数序列,下表从1开始。对于这个序列,你需要统计整个序列的数字种类数,记种类数为m,之后对于每一种数字x,记其出现次数为CxC_x,设函数f(x)f(x)表示在序列中从左到右第Cx/2\lceil C_x/2 \rceil个数字x对应的下标(y\lceil y \rceil表示对y向上取整,例如0.5\lceil 0.5 \rceil=1,2\lceil 2 \rceil=2)。最后你需要将所有f(x)f(x)按从小到大的顺序输出出来。

输入描述

第一行一个正整数n ,表示序列长度

第二行n个由空格隔开的正整数a1,a2,.....ana_1,a_2,.....a_n,表示改序列

1n1000001 \leq n\leq100000

1ai100001\leq a_i\leq10000

输出描述

第一行输出一个正整数m,表示序列中的数字种类数

第二行输出m个由空格隔开的正整数,分别表示从小到大的顺序排序之后的函数值,末尾不要输出多余空格。

样例

输入1

9
3 4 5 5 3 4 4 5 3

输出1

3
4 5 6

提示

一共有3,4,5三种数字,其中3的f(3)=5,f(4)=6,f(5)=4 ,排序后就是4,5,6