排列修补
题目描述
给定一个长度为 的数组 。
对于每个前缀 (其中 ),你需要计算将其去重以后,“补全”为一个排列所需插入的最少元素数量。
补全规则如下:
- 目标是得到一个长度为 的排列,即包含从 到 的所有整数,且每个整数恰好出现一次。
- 的值必须不小于该前缀中的任何元素,即 。
- 在所有可选的 中,你需要选择一个能使插入元素数量最少的 。
请对每个前缀,都计算出这个最少需要插入的元素数量。
输入格式
第一行输入一个整数 ,表示数组的长度。
第二行输入 个整数 ,表示数组的元素。
输出格式
输出一行,包含 个用空格分隔的整数。其中第 个整数表示对前缀 进行补全所需的最少元素数。
样例
样例输入 1
3
3 1 6
样例输出 1
2 1 3
样例输入 2
5
1 2 3 4 5
样例输出 2
0 0 0 0 0
提示
样例 1 说明
- 对于前缀
{3}
:- 集合中元素为 ,最大值为 。最优的目标排列长度 。
- 目标排列为 。需要插入 ,共 2 个元素。
- 对于前缀
{3, 1}
:- 集合中不同元素为 ,最大值为 。最优的目标排列长度 。
- 目标排列为 。需要插入 ,共 1 个元素。
- 对于前缀
{3, 1, 6}
:- 集合中不同元素为 ,最大值为 。最优的目标排列长度 。
- 目标排列为 。需要插入 ,共 3 个元素。
数据范围与约定
对于 的数据,保证:
相关
在下列比赛中: