CF1630D.Flipping Range

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array aa of nn integers and a set BB of mm positive integers such that 1bin21 \leq b_i \leq \lfloor \frac{n}{2} \rfloor for 1im1\le i\le m , where bib_i is the ii -th element of BB .

You can make the following operation on aa :

  1. Select some xx such that xx appears in BB .
  2. Select an interval from array aa of size xx and multiply by 1-1 every element in the interval. Formally, select ll and rr such that 1lrn1\leq l\leq r \leq n and rl+1=xr-l+1=x , then assign ai:=aia_i:=-a_i for every ii such that lirl\leq i\leq r .

Consider the following example, let a=[0,6,2,1,4,5]a=[0,6,-2,1,-4,5] and B={1,2}B=\{1,2\} :

  1. [0,6,2,1,4,5][0,6,-2,-1,4,5] is obtained after choosing size 22 and l=4l=4 , r=5r=5 .
  2. [0,6,2,1,4,5][0,6,2,-1,4,5] is obtained after choosing size 11 and l=3l=3 , r=3r=3 .

Find the maximum i=1nai\sum\limits_{i=1}^n {a_i} you can get after applying such operation any number of times (possibly zero).

输入格式

The input consists of multiple test cases. The first line contains a single integer tt ( 1t1051 \le t \le 10^5 ) — the number of test cases. Description of the test cases follows.

The first line of each test case contains two integers nn and mm ( 2n1062\leq n \leq 10^6 , 1mn21 \leq m \leq \lfloor \frac{n}{2} \rfloor ) — the number of elements of aa and BB respectively.

The second line of each test case contains nn integers a1,a2,,ana_1,a_2,\ldots,a_n ( 109ai109-10^9\leq a_i \leq 10^9 ).

The third line of each test case contains mm distinct positive integers b1,b2,,bmb_1,b_2,\ldots,b_m ( 1bin21 \leq b_i \leq \lfloor \frac{n}{2} \rfloor ) — the elements in the set BB .

It's guaranteed that the sum of nn over all test cases does not exceed 10610^6 .

输出格式

For each test case print a single integer — the maximum possible sum of all aia_i after applying such operation any number of times.

输入输出样例

  • 输入#1

    3
    6 2
    0 6 -2 1 -4 5
    1 2
    7 1
    1 -1 1 -1 1 -1 1
    2
    5 1
    -1000000000 -1000000000 -1000000000 -1000000000 -1000000000
    1

    输出#1

    18
    5
    5000000000

说明/提示

In the first test, you can apply the operation x=1x=1 , l=3l=3 , r=3r=3 , and the operation x=1x=1 , l=5l=5 , r=5r=5 , then the array becomes [0,6,2,1,4,5][0, 6, 2, 1, 4, 5] .

In the second test, you can apply the operation x=2x=2 , l=2l=2 , r=3r=3 , and the array becomes [1,1,1,1,1,1,1][1, 1, -1, -1, 1, -1, 1] , then apply the operation x=2x=2 , l=3l=3 , r=4r=4 , and the array becomes [1,1,1,1,1,1,1][1, 1, 1, 1, 1, -1, 1] . There is no way to achieve a sum bigger than 55 .

首页