Problem2034--数列切分

2034: 数列切分

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 48  Solved: 30
[Status] [Submit] [Creator:]

Description

将一个大小为 n 的数列切分成连续的若干段,使得每一段连续子序列都同时满足如下两个条件:
① 所有元素之和是 k 的倍数
② 所有元素之和不超过 m(即 ≤ m)

问:满足上述条件的情况下最少将数列切分成多少段连续子序列?

Input

第一行,三个整数 n,k,m(1 ≤ n,k ≤ 1,000, 1 ≤ m ≤ 1,000,000)。  

第二行,n 个整数 a1, a2, ……, an(1 ≤ ai ≤ 1,000)。

Output

如果不能完成满足题目条件的切分,输出 -1 。否则,输出一个整数,表示满足题目要求(即每一段连续子序列和是 k 的倍数且不超过 m)的情况下最小的切分段数。

Sample Input Copy

【样例输入1】
6 3 10
1 2 3 4 5 6
【样例输出1】
3
【样例输入2】
9 2 6
2 3 3 2 3 3 2 3 3
【样例输出2】
6
【样例输入3】
5 2 3
1 2 1 2 2
【样例输出3】
-1
【样例输入4】
6 3 10
1 2 3 4 5 7
【样例输出4】
-1

HINT

【样例解释】
· 样例1:一种最少切分方案为 1 2 3 | 4 5 | 6
· 样例2:一种最少切分方案为 2 | 3 3 | 2 | 3 3 | 2 | 3 3
· 样例3:不存在合法的切分方案
· 样例4:不存在合法的切分方案
【数据规模与约定】
· 对于 30% 的数据,n,k,ai ≤ 10, m ≤ 100
· 对于 60% 的数据,n,k,ai ≤ 100, m ≤ 10,000
· 对于 100% 的数据,1 ≤ n,k ≤ 1,000, 1 ≤ m ≤ 1,000,000, 1 ≤ ai ≤ 1,000

Source/Category