已知一个长度为 N 的整数数组 A(有正有负),我们要在其中找若干子数组,使得:
L,并统计长度为 L 的这类子数组有多少个;-1 -1。已知数组 A,数组 A 内元素为带符号整数,希望在该数组内找到满足如下条件的子数组:
子数组可分为两个连续的子子数组,这两个子子数组长度可互不相同,但他们的元素和都为零
即满足对于子数组区间 [i,j), 存在中同元素 k(i<k<j), 使得 ∑[i,k)==∑[k,j)==0 ;
希望你找出所有满足上述条件数组中的长度最短的子数组。
输入由两行组成:第一行包含一个数字 N ,代表数组的元素数量
第二行包含 N 个数字 Xi(0<=1<N),代表数组的元素内容
输入约束:
1.1<=N<=106
2.−10000<=Xi<=10000
输出满足条件数组的最短长度 以及 该类数组的个数
如果不存在,分别输出 −1 和 −1
输入
5
1 -1 1 -1 1
输出
4 2
说明
注意同一个元素是允许出现再多个不同的子数组中的
本例子中有两种子数组分割方法
方案 1 : [1 −1][1 −1] 1
方案 2 : 1 [−1 1][−1 1]
输入
7
0 100 1 300 2 10 0
输出
-1 -1
说明
找不到满足要求的子数组
输入
7
100 1 -1 3 -2 100
输出
5 -1
说明
子数组 {1 −1 3 −2 −1} 满足条件
其可分为两个满足条件的子子数组 {1 −1} 和 {3 −2 −1}