AT_arc069_c [ARC069E] Frequency

题目描述

すぬけ君喜欢制作数列。 现在有 $1$ 到 $N$ 编号的 $N$ 堆石子。第 $i$ 堆有 $a_i$ 个石子。 すぬけ君准备用以下操作,构造一个长度为 $\sum a_i$ 的数列 $s$: 1. 在所有石子数量最多的石堆中,选择编号最小的一个,记其编号为 $x$,然后在 $s$ 的末尾添加 $x$。 2. 任选一个仍有至少 $1$ 个石子的石堆,从中取出一个石子。 3. 如果仍存在至少 $1$ 个石子的石堆,转至步骤 1,否则流程结束。 请你求出:当 $s$ 是按字典序最小的情况下,$s$ 中每个 $1,2,\ldots,N$ 分别出现了多少次。

输入格式

输入一行,包括 $N\ a_1\ a_2\ \ldots\ a_N$。

输出格式

输出 $N$ 行,第 $i$ 行输出 $i$ 在字典序最小的 $s$ 中出现的次数。

说明/提示

### 限制条件 - $1 \leq N \leq 10^{5}$ - $1 \leq a_i \leq 10^{9}$ ### 样例解释 1 可以按如下方式构造出字典序最小的数列: - 首先最大石堆是第 $2$ 堆,所以把 $2$ 加入 $s$,然后从第 $2$ 堆取走 $1$ 个石子。 - 然后最大石堆为第 $1$ 堆和第 $2$ 堆。选择编号较小的第 $1$ 堆,把 $1$ 加入 $s$,然后再从第 $2$ 堆取走 $1$ 个石子。 - 然后最大石堆只有第 $1$ 堆,把 $1$ 加入 $s$,再从第 $1$ 堆取走 $1$ 个石子。 此时构造出的数列为 $(2,1,1)$。其中 $1$ 出现 $2$ 次,$2$ 出现 $1$ 次。 由 ChatGPT 5 翻译