#1154. 前缀翻转求和

前缀翻转求和

题目描述

给定一个长度为 nn 的数组 a1,a2,,ana_1, a_2, \dots, a_n

你有 mm 种可选的操作,第 jj 种操作由一个整数 bjb_j 表示。如果你选择执行操作 bjb_j,则数组 aa 中从开头到第 bjb_j 个位置的所有元素都会改变符号(即 a1,a2,,abja_1, a_2, \dots, a_{b_j} 均乘以 1-1)。

例如,设 a=[1,4,3,4]a = [1, -4, 3, -4],如果你执行操作 bj=3b_j = 3,则前三个元素的符号翻转,数组变为 [1,4,3,4][-1, 4, -3, -4]。如果接着执行操作 bk=1b_k = 1,第一个元素的符号再次翻转,数组变为 [1,4,3,4][1, 4, -3, -4]

你可以从这 mm 种操作中挑选任意一部分(也可以一种都不选)来执行。请计算在执行若干次操作后,数组所有元素之和(i=1nai\sum_{i=1}^n a_i)可能达到的最大值

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 测试用例的数量。

对于每个测试用例:

  • 第一行包含两个整数 nnmm1mn2×1051 \le m \le n \le 2 \times 10^5)—— 分别表示数组 aa 的长度和可选操作的数量。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n109ai109-10^9 \le a_i \le 10^9)—— 表示数组 aa 的元素。
  • 第三行包含 mm 个整数 b1,b2,,bmb_1, b_2, \dots, b_m1bjn1 \le b_j \le n)—— 表示每种操作对应的前缀长度。保证所有的 bjb_j 互不相同。

输出格式

对于每个测试用例,输出一行一个整数,表示可能达到的最大元素之和。

样例输入 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

说明

数据范围

  • 对于所有测试点,保证 1t1041 \le t \le 10^4
  • 对于每个测试用例,保证 1mn2×1051 \le m \le n \le 2 \times 10^5
  • 对于每个测试用例,保证 109ai109-10^9 \le a_i \le 10^9
  • 保证同一测试点内所有测试用例的 nn 之和不超过 2×1052 \times 10^5
  • 保证所有的输入数值均为整数。