loj#P4781. 「RMI 2019」魔鬼的份额

「RMI 2019」魔鬼的份额

题目描述

题目译自 Romanian Master of Informatics 2019 Day1 T1 「Devil's Share

给你一个数字 XX,魔鬼想要从中分得属于他的那份。他会拿走这个数字中长度为 KK 的最大子数字。你可以通过重新排列 XX 中的数字来尽量减少魔鬼的份额。

具体来说,你手上有 SS 个数字,这些数字的范围在 1199 之间(包含 1199)。给定一个整数 KK (1KS)(1 \leq K \leq S),你需要用手上的所有数字组成一个数字 XX,使得 XX 中长度为 KK 的最大子字符串尽可能小。

说明XX 的长度为 KK 的子字符串是指由 XX 中连续的 KK 个数字按原有顺序组成的十进制整数。在数字 XX 中,这样的子字符串总共有 SK+1S-K+1 个。

输入格式

输入包含多组数据。第一行包含一个整数 TT (1T5105)(1 \leq T \leq 5\cdot 10^5),表示测试数据的组数。

每组输入数据包含两行,第一行包含一个整数 KK,表示需要考虑的子字符串长度。第二行包含 99 个以空格分隔的整数:D1,D2,,D9D_{1}, D_{2}, \ldots, D_{9} $(0 \leq D_{i}, D_{1}+D_{2}+\ldots+D_{9}=S, 1 \leq S \leq 10^5)$,其中 DiD_{i} 表示你手上有多少个数字 ii

所有输入数据组的 SS 值之和不超过 10610^6

输出格式

对于每个测试样例,在单独的一行中输出你构造的数字 XX

如果存在多个 XX 都具有相同最小的长度为 KK 的最大子字符串,你可以输出其中任意一个。

3
2
1 1 2 0 0 0 0 0 0
7
2 4 2 0 0 6 2 2 2
7
3 3 3 0 0 6 2 2 2
2313
62616236261623778899
623616236162361778899

样例中包含三组测试数据。

在第一个样例中,K=2K=2,你需要排列的数字是 1233。一个最优的 XX 是 2313,其长度为 22 的子字符串分别是 233113,最大的是 31。没有其他排列能使长度为 22 的最大子字符串比 31 更小。另一个同样最优的 XX3123,因为它长度为 2 的最大子字符串也是 31

在第二个样例中,K=7K=7,你需要排列的数字是 11222233666666778899。一个最优的 XX62616236261623778899,其长度为 77 的最大子字符串是 6261623

在第三个样例中,K=7K=7,你需要排列的数字是 111222333666666778899。一个最优的 XX623616236162361778899,其长度为 77 的最大子字符串是 6236177

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 $0 \leq D_{1}, D_{2}, D_{3}, D_{4} \leq 3, D_{5}=D_{6}=\ldots=D_{9}=0, 1 \leq T \leq 1536$,不会有完全相同两组数据 1313
22 K=2K=2 1414
33 D3=D4==D9=0D_{3}=D_{4}=\ldots=D_{9}=0 2929
44 无附加限制 4444