99042 - 拯救小鸡

通过次数

24

提交次数

71

时间限制 : 1 秒
内存限制 : 128 MB

鸡国最近遇到了一件很棘手的事情,经常有一只老鹰想来抓小鸡。经鸡国情报员探查,这只老鹰打算共来袭击 n 次,第 i 次来的时刻为第 t_{i} (1≤i≤n) 秒时刻。 鸡国国王为了保护鸡国中的小鸡,决定派出鸡国警察(鸡国有无穷多个警察)来巡逻。每个警察巡逻的时间长度都为 t 秒。当老鹰来袭击的时刻至少要有x 名警察才能抵御老鹰的袭击。另外国王派遣警察有两个原则: (1)每个时刻最多只能派遣一名警察。在第 0 秒时刻及第 0 秒之前的时刻(鸡国有负数时刻)也可以事先准备派遣警察,但每个时刻最多也只能派遣一名警察。 (2)延迟 1 秒执行巡逻任务。第 i 秒时刻派遣的警察,在第 i+1 i+t 秒时刻执行巡逻任务。 为帮助国王节省开支,请帮忙计算至少需要派遣多少名警察才能保证鸡国小鸡不被老鹰抓走?

输入

第 1 行输入三个整数 ntx,分别表示老鹰总共袭击次数,每个警察巡逻的时间长度 ,以及某个时刻能抵挡住老鹰袭击的最少警察数量。 第 2 行 n 个严格升序排列的正整数t_{i}(1≤i≤n),表示第 t_{i}秒时刻老鹰会发动袭击。

输出

一个整数,表示总共至少需要派遣多少个警察才能抵御老鹰的 n 次袭击,如果出现无法抵御老鹰的袭击时,输出“-1”(不包含双引号)

样例

输入

3 3 3 
2 3 4 

输出

5

输入

1 2 3
3

输出

-1

提示

【样例 1 解释】

样例 1 中,老鹰来袭击 3 次,分别在第 2,3,4 秒时刻,每个警察的巡逻时间为 3 秒,当老鹰来袭击时至少要有 3 名警察才能抵御老鹰的袭击。首先可以在第-1,0,1 秒三个时刻分别派遣一名警察,抵御老鹰第 2 秒时刻的袭击,然后再在第 2 秒时刻派遣一名警察,连同第 0,1 秒两个时刻派遣的警察(此时第-1 秒时刻派遣的警察已经休息)就可以抵御老鹰第 3 秒时刻的袭击,最后在第 3 秒时刻派遣一名警察,连同第 1,2 秒两个时刻派遣的警察(此时第 0 秒时刻派遣的警察也已经休息)就可以抵御老鹰第 4 秒时刻的袭击,所以至少需 要派遣 5 名警察。

【样例 2 解释】 样例 2 中,老鹰来袭击 1 次,在第 3 秒时刻,每个警察的巡逻时间为 2 秒,但当老鹰来袭击时至少要有 3 名警察才能抵御老鹰的袭击,按照国王派遣警察的原则,无法实现抵御老 鹰的任务,输出“-1”。

1~6 1≤n,t,x≤300 1≤t_{i}≤300(保证不重复)

7~14 1≤n,t,x≤3000 1≤t_{i}≤3000(保证不重复)

15~20 1≤n,t,x≤10000 1≤t_{i}≤10000(保证不重复)