#852. 拯救小鸡

拯救小鸡

题目背景

鸡国最近遇到了一件很棘手的事情,经常有一只老鹰想来抓小鸡。

题目描述

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

输入格式

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

输出格式

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

样例输入

3 3 3
2 3 4

样例输出

5

样例解释

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

数据范围约定

  • 测试点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(保证不重复)