#S44M11T1. 传递能量(energy)

传递能量(energy)

传递能量(energy)

【题目描述】

有 nn 个小朋友围成一个圈,逆时针依次编号为 1,2,…,n1,2, \ldots, n 。第 ii 个小朋友初始有 eie_{i} 点能量。你可以让一个小朋友将能量传递给他右边的小朋友,但是能量在传递过程中会损耗一半。具体来说,你每一次操作可以让一个小朋友的能量值降低2(能量值始终不能为负数),然后让他右边的小朋友能量值增加1。 i(1<i<n)i(1<i<n) 号小朋友右边的小朋友是i+1i+1 号,nn 号小朋友右边的小朋友是1号。

现在问是否有可能让所有小朋友的能量值相等,如果可以,请输出最少操作次数;如果不行,请输出-1。

【输入格式】

从文件 energy.in 中读入数据。 本题输入文件有多组测试数据。 第一行一个正整数表示数据组数 T(T≤10)T(T \leq 10) 。 对于每组测试样例: 第一行一个正整数 nn 。 第二行 nn 个正整数 $a_{1}, a_{2}, \ldots a_{n}\left(1 \leq a_{i} \leq 10^{9}\right)$ 。 数据保证 ∑n≤2×105\sum n \leq 2 \times 10^{5} 。

【输出格式】

输出到文件 energy.out 中。 对于每组数据,输出一行答案。

【样例1输入】

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

【样例1输出】

0
-1
3

【样例2】 见下发文件的 energy/energy2.in 与 energy/energy2.ans。

【样例 3】 见下发文件的 energy/energy3.in 与 energy/energy3.ans。

【数据范围与提示】 对于100%的数据,T=10,∑n≤2×105T=10, \sum n \leq 2 \times 10^{5}

数据编号 nn 特殊性质
1 ~ 3 ≤5\leq 5 A
4 ~ 6 ≤200\leq 200
7 ~ 11
12 ~ 15 ≤2×105\leq 2 \times 10^{5} A
16 ~ 20

特殊性质 A:ai≤100a_{i} \leq 100 。

附加文件