寻找平衡日
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

SIT 算法竞赛社的教练正在为队员们制定训练计划。 有 n 天训练,每天的训练强度为 nums[i]

教练希望找到一天作为 “平衡日”,使得这一天的之前所有天的训练强度之和等于之后所有天的训练强度之和

形式上,训练日 i 是平衡日,当且仅当其之前的日子的训练强度之和等于其右边的日子的训练强度之和。

注意:
如果 i=1,左侧和为 0
如果 i=n,右侧和为 0
给定数组 nums,找出最靠左的平衡日下标。 
如果不存在这样的平衡日,返回 -1。

输入描述:

第一行输入一个整数n,表示数组长度(1 \leq n \leq 10^5
第二行输入n个整数num_1num_2,...,num_n,表示每天的训练强度
1 \leq num_i \leq 10^5

输出描述:

输出一个整数k,表示平衡日的日期,如果没有,请输出-1。
示例1

输入

复制
6
1 7 3 6 5 6

输出

复制
4
示例2

输入

复制
3
1 2 3

输出

复制
-1