#CF1420C2. 宝可梦军队(困难版)

宝可梦军队(困难版)

宝可梦军队(困难版)

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一个长度为 nn 的排列 aa。你可以选择任意非空子序列 ab1,ab2,…,abka_{b_1},a_{b_2},\ldots,a_{b_k},其中 1≤b1<b2<⋯<bk≤n1\le b_1<b_2<\cdots<b_k\le n。这个子序列的力量为

ab1−ab2+ab3−ab4+⋯ .a_{b_1}-a_{b_2}+a_{b_3}-a_{b_4}+\cdots.

你需要先求出初始排列能得到的最大力量。随后有 qq 次操作,每次交换位置 lil_i 与 rir_i 上的元素;每次交换后也要求出当前排列能得到的最大力量。

输入格式

第一行包含测试用例数 tt。

每个测试用例的第一行包含两个整数 n,qn,q。

第二行包含 nn 个互不相同的整数 a1,a2,…,ana_1,a_2,\ldots,a_n,它们构成 11 到 nn 的一个排列。

接下来 qq 行,每行包含两个整数 li,ril_i,r_i,表示交换这两个位置上的元素。

输出格式

对于每个测试用例,依次输出初始状态以及每次交换后的最大力量,共输出 q+1q+1 个整数,每个整数占一行。

样例输入 1

3
3 1
1 3 2
1 2
2 2
1 2
1 2
1 2
7 5
1 2 5 4 3 6 7
1 2
6 7
3 4
1 2
2 3

样例输出 1

3
4
2
2
2
9
10
10
10
9
11

数据范围

对于所有数据,1≤t≤1031\le t\le10^3,1≤n≤3×1051\le n\le3\times10^5,0≤q≤3×1050\le q\le3\times10^5,1≤li≤ri≤n1\le l_i\le r_i\le n。所有测试用例的 nn 之和不超过 3×1053\times10^5,qq 之和也不超过 3×1053\times10^5。

子任务编号 分值 特殊限制
1 20 每个测试用例均满足 n,q≤10n,q\le10
2 40 每个测试用例均满足 n,q≤2000n,q\le2000
3 无特殊限制