题目三十
C. Andrew and Stones
[原题链接]
[题目翻译]
Andrew有n堆石头,第i堆包含ai个石头。他想把他的桌子弄干净,所有他决定把所有的石头放到第1或n堆。
Andrew可以执行以下操作任意次数:
选择3个索引1≤i<j<k≤n,使第j堆包含至少2块石头,然后他从j堆中取出2块石头把1块放入i堆,1块放入k堆。
告诉Andrew移动所有的石头到1堆和n堆的最小操作次数是多少,判断是否不可能。
[输入]
输入包含几个测试用例。第一行包含一个整数t (1≤t≤10000)——测试用例的数量。
每个测试用例的第一行包含一个整数n (3≤n≤10e5)——数组的长度。
第二行包含一个整数序列a1,a2,…,an (1≤ai≤10e9)——表示数组元素。
它保证所有的测试用例的值的和不超过10e5
[输出]
对于,每个测试用例,打印将石头移动到桩上所需的最小操作数量1到n,否则,如果不可能的话,打印-1。