每个测试点时间限制:4 秒
内存限制:256 兆字节
题目描述
本题为简单版。与困难版的区别在于,本版中 ai≤min(n,100)。
你有一个包含 n 个整数的数组 a1,a2,…,an。
你的任务是找到一个子数组 a[l,r](连续的一段 al,al+1,…,ar),使得表达式med(a[l,r])−min(a[l,r])
的值最大。其中:
med —— 子数组的中位数,即子数组排序后位于 ⌈2k+1⌉ 位置的元素,k 是子数组的长度;
min —— 该子数组的最小值。
例如,考虑数组 a=[1,4,1,5,3,3],并选择子数组 a[2,5]=[4,1,5,3]。排序后得到 [1,3,4,5]。
med(a[2,5])=4,因为 ⌈24+1⌉=3,排序后的第三个元素是 4;min(a[2,5])=1,最小元素是 1。此时 med−min=4−1=3。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105),表示数组长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤min(n,100))。
保证所有测试用例的 n 之和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数 —— 在所有子数组中,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[2,3]=[2,5]。
子数组长度为 2,中位数是排序后 ⌈23⌉=2 位置的元素,排序后得到 [2,5],med=5;最小值 min=2,因此 med−min=5−2=3,这是最大答案。
在第二个测试中,数组 a=[4,1,1,3],可以选择子数组 a[1,2]=[4,1]。
子数组长度为 2,中位数是排序后 ⌈23⌉=2 位置的元素,排序后得到 [1,4],med=4;最小值 min=1,因此 med−min=4−1=3。
可以证明,这两个子数组都是最优的,且使得表达式 med−min 达到最大值。