#P12985. [GCJ 2022 #1A] Equal Sum

    ID: 12807 远端评测题 5000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>数学贪心2022交互题Special Judge进制构造Google Code Jam

[GCJ 2022 #1A] Equal Sum

Description

给定一组互不相同的整数,你需要将它们分成两个非空子集,使得每个元素恰好属于其中一个子集,且两个子集中所有元素的和相等。

匿名提示称上述问题不太可能在多项式时间内解决(或类似结论),因此我们决定修改题目。现在,你可以自行决定其中一半的整数!

这是一个包含三个阶段的交互题:

  1. 阶段1:你选择 N\mathbf{N} 个互不相同的整数。
  2. 阶段2:系统会额外提供 N\mathbf{N} 个整数,这些整数彼此不同且与你选择的整数不同。
  3. 阶段3:你需要将这 2N2\mathbf{N} 个整数划分为两个和相等的子集。

所有整数的取值范围为 1110910^9(含),且保证它们的总和为偶数。

交互协议

这是一个交互问题。

初始时,你的程序需读取一个整数 T\mathbf{T} 表示测试用例数量,随后处理 T\mathbf{T} 个测试用例。

对于每个测试用例:

  1. 程序先读取一个整数 N\mathbf{N}
  2. 程序输出一行包含 N\mathbf{N} 个互不相同的整数 A1,A2,,ANA_1, A_2, \ldots, A_{\mathbf{N}}(每个整数在 1110910^9 范围内)。
  3. 程序读取一行包含 N\mathbf{N} 个额外整数 B1,B2,,BNB_1, B_2, \ldots, B_{\mathbf{N}}
  4. 程序输出一行包含 112N12\mathbf{N}-1 个整数(从 AABB 的并集中选择),表示第一个子集的元素。未输出的元素自动归入第二个子集。

当前测试用例结束后,立即处理下一个(若存在)。所有测试用例均会被处理,无论最终输出是否正确。

注意:可以证明在本题限制下,存在至少一组 A1,A2,,ANA_1, A_2, \ldots, A_{\mathbf{N}} 使得对任意给定的 B1,B2,,BNB_1, B_2, \ldots, B_{\mathbf{N}},都能将 2N2\mathbf{N} 个整数划分为和相等的两个子集。

若程序在任何时刻输出格式非法(如整数数量不符、范围越界或重复),裁判将返回 1-1 并终止交互。若程序未及时退出,将判为 Time Limit Exceeded。内存超限或运行时错误将得到相应判果。

Input Format

见交互协议。

Output Format

见交互协议。

2
3

10 4 9

3

10 8 12


5 1 3

1 10 5

5 2 3

12 8

Hint

样例解释

上述样例交互中,程序正确解决了所有测试用例。注意:样例中的 N\mathbf{N} 值不符合实际测试集限制,仅用于简化示例。若裁判在第一用例中给出 {2,7,100}\{2, 7, 100\},则可能无法找到合法划分。

可使用本地测试工具或平台调试。本地测试需配合交互运行器(详见工具文件注释)。

限制条件

测试集 1(可见判果)

  • 1T1001 \leq \mathbf{T} \leq 100
  • N=100\mathbf{N} = 100
  • 1Bi1091 \leq \mathbf{B}_i \leq 10^9(对所有 ii)。
  • BiAj\mathbf{B}_i \neq A_j(对所有 i,ji, j)。
  • BiBj\mathbf{B}_i \neq \mathbf{B}_j(对所有 iji \neq j)。
  • 每个测试用例中,裁判选择的 Bi\mathbf{B}_i 保证 2N2\mathbf{N} 个整数的和为偶数。

翻译由 DeepSeek V3 完成