SP10084 FAKESCOR - Fake Scoreboard

题目描述

正如你所知,SWERC 竞赛结束后,习惯上会公布一份包含详细提交记录和判题结果的完整排行榜。然而由于竞赛管理系统的 b ug,今天大部分相关数据并未被记录。显然,这样的状况不符合我们的高标准,因此评委们决定根据仅存的一些信息来补全数据,并希望参赛者们无法察觉其中的区别。为了简化我们的工作,我们请求你提供一个解决方案,否则今天的排行榜将永远遥不可及(即使是伪造的)。 比赛结束时,我们将知道队伍数量 $T$、题目数量 $P$,以及每支队伍通过的题目数。根据现场漂浮气球的数量和颜色,我们也能推断出每道题目被解出的队伍数。你的任务是推断各队伍解决了哪些题目。 我们的计数能力有限,因此你的程序需要检测我们收集的数据是否存在错误(见样例输入 1)。如果数据正确,你需要输出一个可能的解,表示为 $T$ 个字符串,每个字符串长度为 $P$,且只包含字母 N 和 Y。对于第 $i$ 个队伍($1 \le i \le T$),输出一个字符串,其中第 $j$ 个字符($1 \le j \le P$)是 Y 表示该队伍解决了题目 $j$,否则为 N。例如,以下三个字符串对应第二个样例输入的一个解,其中每个队伍的通过题目数分别为 2, 1, 2,每道题目的通过队伍数分别是 1, 2, 2: ``` NYY NNY YYN ``` 当然,可能还存在其他的解,例如: ``` NYY NYN YNY ``` 如果存在多种解法,我们要求提供字典序最小的解,即将 $T$ 行字符串依次连接起来后字典序最小的那种。在上面的例子中,我们选择第一个解,因为连接后的字符串 NYYNNYYYN 在字典序上比 NYYNYNYNY 更小。(字符串 $S$ 在字典序上小于字符串 $S'$,如果两者在第一个不同的字符处,$S$ 中的字符是 N 而 $S'$ 中的是 Y)。

输入格式

每组输入数据由三行组成: 第一行包含两个整数 $T$ 和 $P$,分别表示队伍数和题目数,满足 $1 \le T, P \le 90$。 第二行包含 $T$ 个整数,每个整数在 0 到 90 之间,第 $i$ 个整数表示第 $i$ 支队伍解决的问题数。 第三行包含 $P$ 个整数,每个整数在 0 到 90 之间,第 $j$ 个整数表示被成功解决的队伍数。 不同的测试数据之间用一个空行分隔。输入的最后以 "0 0" 结束。

输出格式

如果输入数据有解,输出 $T$ 行,每行 $P$ 个字符,表示字典序最小的解。否则输出一行 "Impossible"。在不同测试数据之间插入一个空行。 **本翻译由 AI 自动生成**