#CF2126G1. 大胜利!(简单版)

大胜利!(简单版)

每个测试点时间限制:4 秒 内存限制:256 兆字节

题目描述

本题为简单版。与困难版的区别在于,本版中 aimin(n,100)a_i \le \min(n, 100)

你有一个包含 nn 个整数的数组 a1,a2,,ana_1, a_2, \dots, a_n

你的任务是找到一个子数组 a[l,r]a[l, r](连续的一段 al,al+1,,ara_l, a_{l+1}, \dots, a_r),使得表达式med(a[l,r])−min(a[l,r]) 的值最大。其中:

med\operatorname{med} —— 子数组的中位数,即子数组排序后位于 k+12\left\lceil \frac{k+1}{2} \right\rceil 位置的元素,kk 是子数组的长度;

min\min —— 该子数组的最小值。

例如,考虑数组 a=[1,4,1,5,3,3]a = [1,4,1,5,3,3],并选择子数组 a[2,5]=[4,1,5,3]a[2,5] = [4,1,5,3]。排序后得到 [1,3,4,5][1,3,4,5]。 med(a[2,5])=4,因为 4+12=3\left\lceil \frac{4+1}{2} \right\rceil = 3,排序后的第三个元素是 44;min(a[2,5])=1,最小元素是 11。此时 medmin=41=3\operatorname{med} - \min = 4 - 1 = 3

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。 每个测试用例的第一行包含一个整数 nn1n21051 \le n \le 2 \cdot 10^5),表示数组长度。 每个测试用例的第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1aimin(n,100)1 \le a_i \le \min(n, 100))。 保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,输出一个整数 —— 在所有子数组中,medmin\operatorname{med} - \min 的最大可能值。

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

数据规模与约定

在第一个示例中,数组 a=[3,2,5,3,1]a = [3, 2, 5, 3, 1],可以选择子数组 a[2,3]=[2,5]a[2, 3] = [2, 5]。 子数组长度为 22,中位数是排序后 32=2\left\lceil \frac{3}{2} \right\rceil = 2 位置的元素,排序后得到 [2,5][2, 5]med=5\operatorname{med} = 5;最小值 min=2\min = 2,因此 medmin=52=3\operatorname{med} - \min = 5 - 2 = 3,这是最大答案。

在第二个测试中,数组 a=[4,1,1,3]a = [4, 1, 1, 3],可以选择子数组 a[1,2]=[4,1]a[1, 2] = [4, 1]。 子数组长度为 22,中位数是排序后 32=2\left\lceil \frac{3}{2} \right\rceil = 2 位置的元素,排序后得到 [1,4][1, 4]med=4\operatorname{med} = 4;最小值 min=1\min = 1,因此 medmin=41=3\operatorname{med} - \min = 4 - 1 = 3

可以证明,这两个子数组都是最优的,且使得表达式 medmin\operatorname{med} - \min 达到最大值。