题目描述
你是 Macrohard 公司的一名员工,需要实现一种用于存储整数键的新数据结构。
这些键保存在一个特殊的有序集合中。该集合可以看作一个数组 A:
- 数组拥有无限多个位置;
- 位置从 1 开始编号;
- 初始时所有位置均为空。
数据结构需要支持操作 Insert(L,K),其中 L 是数组位置,K 是一个正整数键值。
操作按如下方式递归执行:
-
如果 A[L] 为空,则令
A[L]←K.
-
如果 A[L] 非空,则先执行
Insert(L+1,A[L]),
再令
A[L]←K.
给定 N 个整数 L1,L2,…,LN,你需要依次执行:
Insert(L1,1),
Insert(L2,2),
⋯
Insert(LN,N),
并输出所有操作完成后的数组内容。
输入格式
第一行包含两个整数 N,M:
- N 表示
Insert 操作的数量;
- M 表示所有插入操作中允许使用的最大初始位置。
满足:
1≤N≤131072,
1≤M≤131072.
第二行包含 N 个整数 L1,L2,…,LN,描述依次执行的插入操作,且
1≤Li≤M.
输出格式
第一行输出整数 W,表示最终数组中最靠右的非空位置编号。
第二行输出 W 个整数:
A[1],A[2],…,A[W].
若某个位置为空,则在对应位置输出 0。
样例输入
5 4
3 3 4 1 3
样例输出
6
4 0 5 2 3 1
数据范围与限制
- 1≤N,M≤131072
- 1≤Li≤M
- 时间限制:2 s
- 空间限制:64 MB