#CF2112B. 缩数组
缩数组
B. 缩数组
每次测试时间限制:2 秒
内存限制:256 兆字节
如果一个数组 包含至少两个元素,并且存在一个位置 使得 (其中 表示 的绝对值),则称数组 是 美丽的。
你有一个数组 。只要它的元素个数至少为 ,你就可以执行以下操作:
- 选择数组 中相邻的两个位置 和 。
- 选择一个整数 ,满足 。
- 从数组中删除数字 和 ,并在它们的位置插入数字 。
显然,数组的大小会减少 。
计算使数组变成美丽所需的最少操作次数,如果不可能则报告 。
输入
第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含一个整数 ()——数组 的大小。
第二行包含 个整数 ()——数组 的元素。
输出
对于每个测试用例,输出一个整数——使数组变为美丽所需的最少操作次数,如果不可能则输出 。
示例
输入
4
4
1 3 3 7
2
6 9
4
3 1 3 7
4
1 3 5 2
输出
0
-1
1
1
说明
- 第一个测试用例中,给定数组已经是美丽的,因为 。
- 第二个测试用例中,无法使数组变得美丽,因为执行操作后数组大小会小于 。
- 第三个测试用例中,可以选择 和 ,将它们替换为数字 ,得到数组 ,它是美丽的。
- 第四个测试用例中,可以选择 和 ,将它们替换为数字 ,得到数组 ,它是美丽的。