#1013. 前缀后缀和平衡

前缀后缀和平衡

题目描述

给定一个长度为 nn 的整数序列 aa。

您可以对这个序列进行若干次(可以为 00 次)操作,每次操作规则如下:

  • 选定满足 1≤i,j≤n1 \le i, j \le n 的下标 ii 和 jj(且 i≠ji \neq j),将 aia_i 赋值为 ai+1a_i+1,同时将 aja_j 赋值为 aj−1a_j-1。

注意,操作过程中 aia_i 可以变为负数。

请计算出使得前缀和之和等于后缀和之和的最小操作次数。

也就是说,令 si=a1+a2+⋯+ais_i = a_1 + a_2 + \dots + a_i,ti=ai+ai+1+⋯+ant_i = a_i + a_{i+1} + \dots + a_n,你需要通过最少的操作次数,使得最终序列满足 s1+s2+⋯+sn=t1+t2+⋯+tns_1 + s_2 + \dots + s_n = t_1 + t_2 + \dots + t_n。

输入格式

第一行包含一个整数 nn。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n,相邻两个整数之间用一个空格隔开,表示初始序列 aa。

输出格式

输出一行,一个整数,表示最少需要的操作次数。如果无论如何操作都无法满足条件,输出 -1。

样例输入 1

5
1 2 3 4 5

样例输出 1

3

样例输入 2

6
2 3 7 4 5 8

样例输出 2

-1

说明

数据范围

对于所有测试点,保证:

  • 1≤n≤1061 \le n \le 10^6 ,
  • 1≤ai≤1061 \le a_i \le 10^6 ,
  • 保证所有的输入数值均为整数。