307787: CF1417B. Two Arrays

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Two Arrays

题意翻译

- 给出一个序列,和一个常数 $T$,将序列中元素分到两个集合里(集合可为空),使得两个集合内部 满足 $i\lt j$ 且 $a_i+a_j=T$ 的二元组 $(i,j)$ 数量 的和最小,输出方案(不需要输出总数;两个集合分别用 0 和 1 表示)。 - 数据组数 $t\le1000$,序列长度 $n\le10^5$,常数 $0\le T\le10^9$,元素大小 $0\le a_i\le10^9$。

题目描述

RedDreamer has an array $ a $ consisting of $ n $ non-negative integers, and an unlucky integer $ T $ . Let's denote the misfortune of array $ b $ having length $ m $ as $ f(b) $ — the number of pairs of integers $ (i, j) $ such that $ 1 \le i < j \le m $ and $ b_i + b_j = T $ . RedDreamer has to paint each element of $ a $ into one of two colors, white and black (for each element, the color is chosen independently), and then create two arrays $ c $ and $ d $ so that all white elements belong to $ c $ , and all black elements belong to $ d $ (it is possible that one of these two arrays becomes empty). RedDreamer wants to paint the elements in such a way that $ f(c) + f(d) $ is minimum possible. For example: - if $ n = 6 $ , $ T = 7 $ and $ a = [1, 2, 3, 4, 5, 6] $ , it is possible to paint the $ 1 $ -st, the $ 4 $ -th and the $ 5 $ -th elements white, and all other elements black. So $ c = [1, 4, 5] $ , $ d = [2, 3, 6] $ , and $ f(c) + f(d) = 0 + 0 = 0 $ ; - if $ n = 3 $ , $ T = 6 $ and $ a = [3, 3, 3] $ , it is possible to paint the $ 1 $ -st element white, and all other elements black. So $ c = [3] $ , $ d = [3, 3] $ , and $ f(c) + f(d) = 0 + 1 = 1 $ . Help RedDreamer to paint the array optimally!

输入输出格式

输入格式


The first line contains one integer $ t $ ( $ 1 \le t \le 1000 $ ) — the number of test cases. Then $ t $ test cases follow. The first line of each test case contains two integers $ n $ and $ T $ ( $ 1 \le n \le 10^5 $ , $ 0 \le T \le 10^9 $ ) — the number of elements in the array and the unlucky integer, respectively. The second line contains $ n $ integers $ a_1 $ , $ a_2 $ , ..., $ a_n $ ( $ 0 \le a_i \le 10^9 $ ) — the elements of the array. The sum of $ n $ over all test cases does not exceed $ 10^5 $ .

输出格式


For each test case print $ n $ integers: $ p_1 $ , $ p_2 $ , ..., $ p_n $ (each $ p_i $ is either $ 0 $ or $ 1 $ ) denoting the colors. If $ p_i $ is $ 0 $ , then $ a_i $ is white and belongs to the array $ c $ , otherwise it is black and belongs to the array $ d $ . If there are multiple answers that minimize the value of $ f(c) + f(d) $ , print any of them.

输入输出样例

输入样例 #1

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

输出样例 #1

1 0 0 1 1 0 
1 0 0

Input

题意翻译

- 给出一个序列,和一个常数 $T$,将序列中元素分到两个集合里(集合可为空),使得两个集合内部 满足 $i\lt j$ 且 $a_i+a_j=T$ 的二元组 $(i,j)$ 数量 的和最小,输出方案(不需要输出总数;两个集合分别用 0 和 1 表示)。 - 数据组数 $t\le1000$,序列长度 $n\le10^5$,常数 $0\le T\le10^9$,元素大小 $0\le a_i\le10^9$。

加入题单

算法标签: