#qm08. 限制排序

限制排序

题目背景:

小陶最近对数组排序产生了浓厚的兴趣。他这次拿到了一个长度为 nn 的数组 A={a1,a2,,an}A = \{a_1, a_2, \dots, a_n\}(数组中的元素可能包含重复数字,且不一定连续)。

题目描述:

小陶发现,如果给定一个限制整数 kk,他可以对这个数组进行一种“受限交换”操作:

  1. 每次操作时,小陶可以任选两个下标 iij(1i<jn)j (1 \le i < j \le n)
  2. 只有当这两个位置上的数值之差的绝对值满足 aiajk|a_i - a_j| \ge k 时,小陶才能交换这两个数。

如果小陶可以通过有限次(包括零次)这样的操作,将数组 A 变为非降序排列(即 a1a2ana_1 \le a_2 \le \dots \le a_n),那么我们就称 kk 是一个“可行的限制值”。小陶想知道,在所有可行的限制值 kk 中,最大的是多少?

输入格式:

输入第一行给出一个正整数 T(1T104)T (1 \le T \le 10^4),表示测试用例的数量。 每个测试用例包含两行: 第一行包含一个整数 n(1n2105)n (1 \le n \le 2 \cdot 10^5),表示数组的长度。 第二行包含 n 个由空格隔开的整数 ai(1ai109)a_i (1 \le a_i \le 10^9),表示数组的元素。 数据保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5

输出格式:

对于每个测试用例,在一行中输出最大的可行限制值 kk。如果 kk 可以为任意大的正整数(即排列本身已经有序),请输出 1-1

输入样例:

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

输出样例:

-1
-1
2
2
3