题目描述
Oleg 和 Dasha 参加了一场团队竞赛,但不幸的是,他们未能解决任何问题。Oleg 立刻意识到他们的队伍训练不足。然后,他们共同的朋友提出了一个有趣的练习。这个练习相当简单,要解决它,只需要知道整数加减法的规则。
给定一个长度为 n 的数组 a,初始时所有值均为零。同时给定 m 个数 x1,x2,…,xm。然后,对于从 1 到 m 的每个 i,你需要选择某个下标 ji,并执行更改 aji=xi−aji。
请帮助 Oleg 和 Dasha 确定,如果每次选择都最优,那么在所有更改完成之后,数组 a 的元素之和的最大值可能为多少。
输入格式
每个测试包含多个输入数据集。第一行包含一个整数 t(1≤t≤10000)—— 输入数据集的数量。
每个数据集的第一行包含两个整数 n 和 m。(1≤n,m≤300000)
每个数据集的第二行包含 m 个整数 x1,x2,…,xm。(−109≤xi≤109)
设 N 为所有数据集中 n 的总和,M 为所有数据集中 m 的总和。
保证 N 和 M 均不超过 300000。
输出格式
对于每个数据集,在新的一行输出一个数字 —— 可以得到的数组 a 的和的最大值。
输入输出样例 #1
输入 #1
4
1 4
1 2 3 4
2 7
10 3 7 1 4 6 3
4 10
103 354 1 227 179 189 142 201 165 140
5 3
-10 11 -4
输出 #1
2
18
1085
17
说明/提示
样例解释
在第一个数据集中,所有操作都应用于数组 a 的第一个元素。它依次变为 1−0=1,2−1=1,3−1=2,4−2=2,所以答案是 2。
在第二个数据集中,可以执行以下更改序列:
- 将更改应用于第一个元素:a1=10−a1=10−0=10,此时 a=[10,0]。
- 将更改应用于第一个元素:a1=3−a1=3−10=−7,此时 a=[−7,0]。
- 将更改应用于第一个元素:a1=7−a1=7−(−7)=14,此时 a=[14,0]。
- 将更改应用于第一个元素:a1=1−a1=1−14=−13,此时 a=[−13,0]。
- 将更改应用于第二个元素:a2=4−a2=4−0=4,此时 a=[−13,4]。
- 将更改应用于第一个元素:a1=6−a1=6−(−13)=19,此时 a=[19,4]。
- 将更改应用于第二个元素:a2=3−a2=3−4=−1,此时 a=[19,−1]。
最后,我们得到 a=[19,−1],所以最终的和是 18。
可以证明不可能得到更好的结果。
评分
本题的测试点包含十个分组。每个分组的分数只有在该分组的所有测试点以及所有依赖分组的测试点都通过时才能获得。请注意,通过样例测试点对于某些分组不是必需的。Offline-evaluation 表示该分组的测试结果将在比赛结束后才可查看。
Subtask |
分数 |
额外限制:n,N |
额外限制:m,M |
额外限制:xi |
依赖组别 |
说明 |
0 |
-- |
-- |
-- |
样例。 |
1 |
4 |
0≤xi |
所有 xi 都相同。 |
2 |
8 |
n=2 |
M≤30,m≤18 |
-- |
|
3 |
11 |
M≤50 |
−10≤xi≤10 |
4 |
9 |
M≤400 |
−400≤xi≤400 |
3 |
5 |
8 |
N≤30,n≤18 |
M≤30,m≤18 |
-- |
0 |
6 |
10 |
N≤2000 |
M≤2000 |
0≤xi |
-- |
7 |
12 |
-- |
0, 2 -- 6 |
8 |
10 |
-- |
0≤xi |
1 |
xi 中最多只有两个不同的值。 |
9 |
17 |
1, 6, 8 |
|
10 |
11 |
-- |
0 -- 9 |
Offline-evaluation。 |