题目描述
给定一个长度为 n 的数组 a1,a2,…,an。
你有 m 种可选的操作,第 j 种操作由一个整数 bj 表示。如果你选择执行操作 bj,则数组 a 中从开头到第 bj 个位置的所有元素都会改变符号(即 a1,a2,…,abj 均乘以 −1)。
例如,设 a=[1,−4,3,−4],如果你执行操作 bj=3,则前三个元素的符号翻转,数组变为 [−1,4,−3,−4]。如果接着执行操作 bk=1,第一个元素的符号再次翻转,数组变为 [1,4,−3,−4]。
你可以从这 m 种操作中挑选任意一部分(也可以一种都不选)来执行。请计算在执行若干次操作后,数组所有元素之和(∑i=1nai)可能达到的最大值。
输入格式
第一行包含一个整数 t(1≤t≤104)—— 测试用例的数量。
对于每个测试用例:
- 第一行包含两个整数 n 和 m(1≤m≤n≤2×105)—— 分别表示数组 a 的长度和可选操作的数量。
- 第二行包含 n 个整数 a1,a2,…,an(−109≤ai≤109)—— 表示数组 a 的元素。
- 第三行包含 m 个整数 b1,b2,…,bm(1≤bj≤n)—— 表示每种操作对应的前缀长度。保证所有的 bj 互不相同。
输出格式
对于每个测试用例,输出一行一个整数,表示可能达到的最大元素之和。
样例输入 1
4
5 3
-1 2 -3 4 -5
1 5 3
4 2
3 -1 3 -1
4 2
3 1
-5 -5 -5
2
4 3
3 -1 1 -3
4 3 2
样例输出 1
3
4
5
6
说明
数据范围
- 对于所有测试点,保证 1≤t≤104。
- 对于每个测试用例,保证 1≤m≤n≤2×105。
- 对于每个测试用例,保证 −109≤ai≤109。
- 保证同一测试点内所有测试用例的 n 之和不超过 2×105。
- 保证所有的输入数值均为整数。