#CF1995C. C. 平方操作
C. 平方操作
C. 平方操作
每次测试时间限制:2秒
内存限制:256兆字节
ikrpprpp 有一个由整数组成的数组 。他追求公平,因此希望使数组 变成非递减的。为此,他可以对数组的某个下标 执行一次“公正操作”,该操作会将 替换为 (即把第 个元素替换为其平方)。
例如,若 ,ikrpprpp 选择对 执行一次公正操作,则 变为 。
问:最少需要执行多少次公正操作,才能使数组变为非递减?如果不可能做到,输出 。
输入
第一行包含一个整数 ()——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例:
- 第一行包含一个整数 ()——数组 的大小。
- 第二行包含 个整数 ()。
所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个整数——使数组变为非递减所需的最少公正操作次数。如果不可能做到,输出 。
示例
输入
7
3
1 2 3
2
3 2
3
3 1 5
4
1 1 2 3
3
4 3 2
9
16 2 4 2 256 2 4 2 8
11
10010 10009 10008 10007 10006 10005 10004 10003 10002 10001 10000
输出
0
1
-1
0
3
15
55
注释
- 第一个测试用例:数组已经非递减,无需操作。
- 第三个测试用例:可以证明数组无法变成非递减。
- 第五个测试用例:ikrpprpp 可以依次对下标 、、 执行操作。之后数组变为 。