CF1945H GCD is Greater

题目描述

在徒步旅行的傍晚,Kirill 和 Anton 决定从背包里拿出一个长度为 $n$ 的整数数组 $a$ 来玩一个游戏。规则如下: 1. Kirill 从数组中选择 $2$ 到 $(n-2)$ 个数字,并用红色圈出它们。 2. Anton 用蓝色圈出剩下的所有数字。 3. Kirill 计算所有红色数字的最大公约数([GCD](https://en.wikipedia.org/wiki/Greatest_common_divisor))。 4. Anton 计算所有蓝色数字的按位与([bitwise AND](https://en.wikipedia.org/wiki/Bitwise_operation#AND)),并将数字 $x$ 加到结果上。 5. 如果所有红色数字的 GCD 严格大于所有蓝色数字的按位与与数字 $x$ 的和,则 Kirill 获胜;否则,Anton 获胜。 请帮助 Kirill 战胜 Anton,或者判断是否不可能。

输入格式

每个测试包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 20000$)——表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n$ 和 $x$($4 \le n \le 4 \cdot 10^5$,$0 \le x \le 4 \cdot 10^5$)——整数的数量和数字 $x$。 第二行包含一个长度为 $n$ 的数组 $a$($1 \le a_i \le 4 \cdot 10^5$)。 保证所有测试用例中 $n$ 的总和不超过 $4 \cdot 10^5$。还保证每个测试用例中 $a_i$ 的最大值的总和不超过 $4 \cdot 10^5$。

输出格式

对于每个测试用例,如果可以满足条件,则第一行输出 "YES"。第二行输出 Kirill 选择的数字个数和这些数字(顺序任意,空格分隔)。第三行输出 Anton 选择的数字个数和这些数字。 否则,输出 "NO"。 你可以用任意大小写输出每个字母。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被接受为肯定答案。

说明/提示

由 ChatGPT 4.1 翻译