#P9365. [ICPC 2022 Xi'an R] Power of Two

[ICPC 2022 Xi'an R] Power of Two

Description

SolarPea 喜欢通过发送电力塔来炸毁 PolarSea 的博客 22。由于塔太高,网页的堆栈溢出。所以博客已经不能用了。

现在 SolarPea 拥有两个 a1a2ldotsana_1、a_2、ldots、a_nxx 位 AND 运算符、yy 位 OR 运算符和 zz 位 XOR 运算符的 nn 次方。保证 n=x+y+zn = x + y + z

Solarpea 希望使用这些数字和运算符构造一个算术表达式。正式地定义 x0=0x_0 = 0xi=xi1 opi bix_i = x_{i - 1}\ \mathrm{op}_i\ b_i,其中 bbaa 的排列,这意味着我们可以重新排列 aa 来得到 bb,而 opi\mathrm{op}_i 是上述三种类型的按位运算符之一。那么 xnx_n 就是表达式的结果。

表达式越大,就越有可能使 PolarSea 的博客无法工作。SolarPea 希望你帮他找到最大的 xnx_n 并构造这样的表达式。如果有多个解决方案,则输出其中任何一个。

您需要独立处理 TT 个测试用例。

Input Format

第一行包含一个整数 TT 1T1051\leq T \leq 10 ^ 5),表示测试用例的数量。

对于每个测试用例,第一行包含四个整数 nnxxyyzz0x,y,zn65536,n=x+y+z0\leq x, y, z\leq n \leq 65\,536, n = x + y + z)。下一行包含 nn 个整数 c1,c2,,cnc_1, c_2, \ldots, c_n (0ci<n0\leq c_i < n),其中 ai=2cia_i = 2 ^ {c_i}

保证所有测试用例的 nn 之和不超过 10485761\,048\,576

Output Format

对于每个测试用例,输出 3 行。

第一行包含一个长度为 nn0101 字符串,表示最大 xnx_n 的二进制形式。

下一行包含一个长度为 nn11 索引字符串 op\mathrm{op},其中 opi\mathrm{op}_i表示第 ii 个运算符。在这里,我们将 AND 表示为 & (ASCII 38),OR 表示为 | (ASCII 124),将 XOR 表示为 ^ (ASCII 94)。您应该保证正好有 xx AND 运算符、yy OR 运算符和 zz XOR 运算符。

第三行包含 nn 个整数 d1,d2,,dnd_1, d_2, \ldots, d_n,其中第 ii 个代表 bib_i 的对数,以 22 为底。也就是说,ddcc 的排列。

如果有多个解决方案,则输出其中任何一个。

输入输出样例

4
4 3 0 1
1 0 1 0
4 1 0 3
1 0 1 0
8 0 2 6
1 5 5 7 1 5 5 7
8 0 0 8
1 5 5 7 1 5 5 7

0010
&&^&
0 0 1 1
0011
^^&^
0 1 0 1
10100000
^^|^^^^|
1 5 5 7 1 5 5 7
00000000
^^^^^^^^
1 5 5 7 1 5 5 7

Hint

来源:2022 ICPC 亚洲习安区域赛问题 H.
作者: Alex_Wei.