CF1747A.Two Groups

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

Two Groups

题目描述

给定一个包含 nn 个整数的数组 aa。你需要将这 nn 个整数分成两个组 s1s_1 和 s2s_2(组可以为空),使得满足以下条件:

  • 对于每个 ii (1≤i≤n)(1 \leq i \leq n),aia_i 恰好属于一个组。
  • ∣sum(s1)∣−∣sum(s2)∣|sum(s_1)| - |sum(s_2)| 的值在所有分组方式中最大。这里 sum(s1)sum(s_1) 表示组 s1s_1 中所有数的和,sum(s2)sum(s_2) 表示组 s2s_2 中所有数的和。

请你求出 ∣sum(s1)∣−∣sum(s2)∣|sum(s_1)| - |sum(s_2)| 的最大可能值。

输入格式

输入包含多组测试数据。第一行包含一个整数 tt (1≤t≤2⋅104)(1 \leq t \leq 2 \cdot 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn (1≤n≤105)(1 \leq n \leq 10^5),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n (−109≤ai≤109)(-10^9 \leq a_i \leq 10^9),表示数组 aa 的元素。

保证所有测试用例中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个测试用例,输出一个整数,表示 ∣sum(s1)∣−∣sum(s2)∣|sum(s_1)| - |sum(s_2)| 的最大可能值。

说明/提示

在第一个测试用例中,可以分组为 s1={10}s_1 = \{10\},s2={−10}s_2 = \{-10\}。此时值为 ∣10∣−∣−10∣=0|10| - |-10| = 0。

在第二个测试用例中,可以分组为 s1={0,11,−1}s_1 = \{0, 11, -1\},s2={−2}s_2 = \{-2\}。此时值为 ∣0+11−1∣−∣−2∣=10−2=8|0 + 11 - 1| - |-2| = 10 - 2 = 8。

在第三个测试用例中,可以分组为 s1={2,3,2}s_1 = \{2, 3, 2\},s2={}s_2 = \{\}。此时值为 ∣2+3+2∣−∣0∣=7|2 + 3 + 2| - |0| = 7。

在第四个测试用例中,可以分组为 s1={−9,−4,0}s_1 = \{-9, -4, 0\},s2={2,0}s_2 = \{2, 0\}。此时值为 ∣−9−4+0∣−∣2+0∣=13−2=11|-9 - 4 + 0| - |2 + 0| = 13 - 2 = 11。

由 ChatGPT 4.1 翻译

样例

4
2
10 -10
4
-2 -1 11 0
3
2 3 2
5
-9 2 0 0 -4
0
8
7
11

在线编程 IDE

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