#G0154. 柜子编号【2026周末欢乐赛T3】

柜子编号【2026周末欢乐赛T3】

题目描述

游乐场的自助寄存处有一整排柜子,柜门上的编号从 00 开始:0,1,2,…0, 1, 2, \ldots,一路排到看不见的尽头——柜子是无限多的。

今天一共来了 nn 位游客,第 ii 位游客的行李上贴着一个编号 aia_i。寄存处的规矩很奇怪:行李只能塞进编号和它完全相同的柜子,一个柜子里塞多少件都行,只要编号对得上。

游客们排成一队依次寄存。为了不让后面的人到处乱找空柜,管理员阿柜在每位游客寄存完之后,都要往小黑板上写一个数:此刻还空着的柜子里,编号最小的那一个。要是 00 号柜还空着就写 00;00 号被占了就写 11;00 号和 11 号都被占了就写 22……以此类推。

一天要接待 TT 个时段,时段之间互不影响——每个时段开始时,所有柜子都是空的。请你替阿柜把每个时段小黑板上写下的数列都算出来,别让他把粉笔写秃了。

输入格式

第一行一个正整数 TT,表示时段数。

接下来依次给出 TT 个时段,每个时段占两行:

  • 第一行一个正整数 nn,表示该时段的游客人数;
  • 第二行 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n,表示每位游客行李上的编号。

输出格式

对每个时段输出一行,共 nn 个整数,第 ii 个整数表示第 ii 位游客寄存完之后小黑板上的数,相邻两个整数用一个空格分隔。

样例 1

1
5
1 2 0 4 3
0 0 3 3 5

样例 2

2
4
0 0 1 3
3
7 1000000000 2
1 1 2 2
0 0 0

样例解释

  • 样例 1:只有 11 个时段,行李编号依次是 1,2,0,4,31, 2, 0, 4, 3。寄存过程中被占用的柜子编号依次为 {1}\{1\}、{1,2}\{1,2\}、{0,1,2}\{0,1,2\}、{0,1,2,4}\{0,1,2,4\}、{0,1,2,3,4}\{0,1,2,3,4\},其中编号最小的空柜依次是 0,0,3,3,50, 0, 3, 3, 5。
  • 样例 2:第一个时段被占用的柜子编号依次为 {0}\{0\}、{0}\{0\}、{0,1}\{0,1\}、{0,1,3}\{0,1,3\},最小空柜依次是 1,1,2,21, 1, 2, 2;第二个时段三位游客的行李编号互不相同,00 号柜始终空着,所以三个数都是 00。

数据范围与子任务

下发文件

对于全部测试点:

  • 1≤T≤2×1051 \le T \le 2 \times 10^5,1≤n≤1061 \le n \le 10^6,单个文件内所有时段的 nn 之和不超过 10610^6;
  • 0≤ai≤1090 \le a_i \le 10^9;
  • 时间限制 11 秒,空间限制 256256 MiB。
子任务 分值 nn TT ∑n\sum n aia_i
1 10 ≤8\le 8 ≤20\le 20 ≤160\le 160 ≤109\le 10^9
2 15 ≤2000\le 2000 ≤4×104\le 4\times10^4
3 ≤106\le 10^6 ≤10\le 10 ≤106\le 10^6 ≤106\le 10^6
4 20 ≤109\le 10^9
5 40 ≤2×105\le 2\times10^5

计分方式:子任务之间没有依赖关系,每组测试数据通过即得分。