#L4781. 「RMI 2019」Devil's Share

    ID: 3980 传统题 1000ms 256MiB 尝试: 4 已通过: 1 难度: 10 上传者: 标签>贪心算法字符串构造字典序处理组合优化分治合并

「RMI 2019」Devil's Share

题目描述

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

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

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

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


输入格式

输入包含多组数据。第一行包含一个整数 TT (1T51051 \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,你需要排列的数字是 1,2,3,31,2,3,3。一个最优的 XX23132313,其长度为 22 的子字符串分别是 232331311313,最大的是 3131。没有其他排列能使长度为 22 的最大子字符串比 3131 更小。另一个同样最优的 XX31233123,因为它长度为 22 的最大子字符串也是 3131

在第二个样例中,K=7K=7,你需要排列的数字是 1,1,2,2,2,2,3,3,6,6,6,6,6,6,7,7,8,8,9,91,1,2,2,2,2,3,3,6,6,6,6,6,6,7,7,8,8,9,9。一个最优的 XX6261623626162377889962616236261623778899,其长度为 77 的最大子字符串是 62616236261623

在第三个样例中,K=7K=7,你需要排列的数字是 1,1,1,2,2,2,3,3,3,6,6,6,6,6,6,7,7,8,8,9,91,1,1,2,2,2,3,3,3,6,6,6,6,6,6,7,7,8,8,9,9。一个最优的 XX623616236162361778899623616236162361778899,其长度为 77 的最大子字符串是 62361776236177


数据范围与提示

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

子任务 附加限制 分值
1 $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$,不会有完全相同两组数据 13
2 K=2K=2 14
3 D3=D4==D9=0D_{3}=D_{4}=\ldots=D_{9}=0 29
4 无附加限制 44