#P15011. [2026省选联测]猫儿小

[2026省选联测]猫儿小

【题目描述】

我们定义 f(S)f(S)。设 SS 是一个非负整数的多重集(即可以包含重复元素)。每次操作,你可以选择 SS 的任意非空子集(也可以包含重复元素),将该子集中的所有元素从 SS 中移除,并将该子集的 MEX 加入 SS。你可以进行任意次这样的操作。所有操作结束后,SS 中应只剩下恰好一个数。f(S)f(S) 表示通过任意操作序列后,SS 最终可能剩下的最大数。

给定一个长度为 nn 的非负整数数组 aa。对于它的每个前缀,计算 f(S)f(S),其中 SS 是对应的前缀(对于第 ii 个前缀,SS 包含数组 aa 的前 ii 个元素)。

MEX 指的是一个数组中未出现的最小非负整数。

【输入格式】

第一行包含一个整数 nn1n4×1051 \leq n \leq 4 \times 10^5)——数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai4×1050 \leq a_i \leq 4 \times 10^5)——数组 aa

输出格式

输出 nn 个数:对于数组 aa 的每个前缀,输出对应 SSf(S)f(S)

输入输出样例 1

mex.in mex.out
8
179 57 2 0 2 3 2 3
179 2 3 3 3 4 4 5

输入输出样例 2

mex.in mex.out
3
1 0 3
1 2 2

输入输出样例 3

mex.in mex.out
8
1 0 1 2 4 3 0 2
1 2 2 3 3 5 5 5

输入输出样例 4~9

分别满足 1~6 子任务的限制。

说明/提示

样例 1 解释

对于长度为 11 的前缀,初始多重集为 {179}\{179\}。如果什么都不做,结果就是 179179

对于长度为 22 的前缀,初始多重集为 {57,179}\{57, 179\}。可以通过如下操作序列得到 22

  1. {57}\{57\} 进行操作,多重集变为 {0,179}\{0, 179\}
  2. {179}\{179\} 进行操作,多重集变为 {0,0}\{0, 0\}
  3. {0}\{0\} 进行操作,多重集变为 {0,1}\{0, 1\}
  4. {0,1}\{0, 1\} 进行操作,多重集变为 {2}\{2\}。这就是答案。

数据规模与约定

对于所有测试数据,保证:

  • 1n4×1051 \leq n \leq 4\times 10^5
  • 0ai4×1050 \leq a_i\leq 4\times 10^5
Subtask 编号 特殊性质 分值
11 n,ai20n ,a_i\le 20 1515
22 n500n\le 500 1010
33 n5000n \le 5000
44 n105n \le 10^5 1515
55 n2×105n\le2\times 10^5 2020
66 无特殊限制 3030