CF1340B Nastya and Scoreboard
题目描述
Denis 在买了花和糖果之后(你将在下一个任务中了解到这个故事),去和 Nastya 约会,想请求她成为情侣。现在,他们正坐在咖啡馆里,终于……Denis 向她表白了,但……Nastya 并没有给出任何答复。
可怜的男孩因此非常沮丧。他太伤心了,以至于一拳打在了某个带数字的记分牌上。记分牌上的数字显示方式与电子时钟相同:每一位数字由 $7$ 个段(“棍”)组成,这些段可以点亮或熄灭,以显示不同的数字。下图展示了所有 $10$ 个十进制数字的显示方式:

在这一拳之后,一些段坏掉了,也就是说,原本点亮的某些段现在不再发光了。但 Denis 记得原来有多少根棍子是亮着的,现在又有多少根是亮着的。Denis 恰好打坏了 $k$ 根段,他知道现在哪些棍子还在工作。Denis 想出了一个问题:如果你可以恰好再点亮 $k$ 根(当前未亮的)棍子,记分牌上能显示的最大数字是多少?
允许数字有前导零。
输入格式
第一行包含两个整数 $n$ $(1 \leq n \leq 2000)$ —— 记分牌上的数字位数,以及 $k$ $(0 \leq k \leq 2000)$ —— 被打坏的段数。
接下来的 $n$ 行,每行包含一个长度为 $7$ 的二进制字符串,第 $i$ 行表示记分牌第 $i$ 位当前的状态。
每一位数字由 $7$ 个段组成。我们按照下图的方式对这些段编号,如果二进制字符串的第 $i$ 位为 $0$,表示第 $i$ 根棍子未点亮,为 $1$ 表示点亮。这样,一个长度为 $7$ 的二进制字符串就能表示当前哪些段是亮着的。

因此,序列 "1110111"、"0010010"、"1011101"、"1011011"、"0111010"、"1101011"、"1101111"、"1010010"、"1111111"、"1111011" 依次编码了从 $0$ 到 $9$ 的所有数字。
输出格式
输出一个由 $n$ 位数字组成的最大数——即在恰好再点亮 $k$ 根棍子的前提下,记分牌上能够显示的最大数字。如果无法通过恰好点亮 $k$ 根棍子使记分牌显示出合法的数字序列,则输出 $-1$。
说明/提示
在第一个测试样例中,我们必须点亮全部 $7$ 根棍子,记分牌上会显示一个 $8$。
在第二个测试样例中,当前点亮的棍子能显示 $1$。通过额外点亮 $5$ 根棍子,可以得到 $07$、$18$、$34$、$43$、$70$、$79$、$81$ 和 $97$ 这些数字,其中最大的为 $97$。
在第三个测试样例中,无法通过恰好点亮 $5$ 根棍子使记分牌显示出一串合法的数字。
由 ChatGPT 4.1 翻译