CF2112B Shrinking Array

题目描述

序列 $b$ 是美丽的,当且仅当 $b$ 的长度至少为 $2$ 且存在一个位置 $i$ 使得 $\vert b_i-b_{i+1}\vert\le 1$。 给你一个序列 $a$,你可以执行以下操作直到其长度少于 $2$。 - 选择 $a$ 中两个相邻的位置 $i$ 和 $i+1$。 - 选择一个整数 $x$ 使得 $\min(a_i,a_{i+1})\le x\le \max(a_i,a_{i+1})$。 - 删除 $a_i$ 和 $a_{i+1}$,并在它们的位置插入一个 $x$。这会使得 $a$ 的长度减少 $1$。 计算最少需要多少次操作使得 $a$ 变得美丽,或报告这是不可能的。

输入格式

多组数据。第一行一个整数 $t(1\le t\le 200)$,表示数据组数。 对于每组数据,第一行一个整数 $n(2\le n\le 1000)$,表示 $a$ 的大小。\ 第二行 $n$ 个整数 $a_1,a_2,\cdots,a_n(1\le a_i\le 10^6)$。

输出格式

对于每组数据,如果可以通过操作使得 $a$ 为美丽的,输出一行一个整数表示答案;否则输出一行 $-1$ 表示无解。

说明/提示

**样例解释** 对于第一组数据,$\vert a_2-a_3\vert=\vert 3-3\vert=0$,因此 $a$ 是美丽的。 对于第二组数据,执行操作会让 $a$ 的长度小于 $2$,所以不可能使得 $a$ 美丽。 对于第三组数据,选择 $a_1,a_2$ 和 $x=2$,操作后的序列 $[2,3,7]$ 是美丽的。 对于第四组数据,选择 $a_2,a_3$ 和 $x=3$,操作后的序列 $[1,3,2]$ 是美丽的。