CF1417B.Two Arrays

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Two Arrays

题目描述

RedDreamer 有一个由 nn 个非负整数组成的数组 aa,以及一个不吉利的整数 TT

我们定义长度为 mm 的数组 bb 的“不幸值” f(b)f(b) 为满足 1i<jm1 \le i < j \le mbi+bj=Tb_i + b_j = T 的整数对 (i,j)(i, j) 的数量。RedDreamer 需要将数组 aa 的每个元素独立地染成白色或黑色,然后分别构造两个数组 ccdd,使所有白色元素属于 cc,所有黑色元素属于 dd(允许 ccdd 为空)。RedDreamer 希望通过合理染色,使 f(c)+f(d)f(c) + f(d) 的值尽可能小。

例如:

  • 如果 n=6n = 6T=7T = 7a=[1,2,3,4,5,6]a = [1, 2, 3, 4, 5, 6],可以将第 114455 个元素染成白色,其余元素染成黑色。此时 c=[1,4,5]c = [1, 4, 5]d=[2,3,6]d = [2, 3, 6]f(c)+f(d)=0+0=0f(c) + f(d) = 0 + 0 = 0
  • 如果 n=3n = 3T=6T = 6a=[3,3,3]a = [3, 3, 3],可以将第 11 个元素染成白色,其余元素染成黑色。此时 c=[3]c = [3]d=[3,3]d = [3, 3]f(c)+f(d)=0+1=1f(c) + f(d) = 0 + 1 = 1

请你帮助 RedDreamer 合理染色,使 f(c)+f(d)f(c) + f(d) 最小。

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000),表示测试用例数量。接下来有 tt 组测试数据。

每组测试数据的第一行包含两个整数 nnTT1n1051 \le n \le 10^50T1090 \le T \le 10^9),分别表示数组的长度和不吉利的整数。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai1090 \le a_i \le 10^9),表示数组的元素。

所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出 nn 个整数 p1,p2,,pnp_1, p_2, \ldots, p_n(每个 pip_i0011),表示每个元素的颜色。如果 pi=0p_i = 0,则 aia_i 染成白色,属于数组 cc;如果 pi=1p_i = 1,则 aia_i 染成黑色,属于数组 dd

如果有多种方案都能使 f(c)+f(d)f(c) + f(d) 最小,输出任意一种即可。

说明/提示

由 ChatGPT 4.1 翻译

样例

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

在线编程 IDE

建议全屏模式获得最佳体验