问题 J: 跳房子

问题 J: 跳房子

时间限制: 1 Sec  内存限制: 256 MB
提交: 158  解决: 21
[提交][状态][讨论版][命题人:]

题目描述

在地上确定一个起点,然后在起点右侧画n个格子,这些格子分布在一条直线上,且每个格子都有一定的分数,表示到达这个格子时可以获得的分数。玩家从起点开始向右跳,每次都必须落在当前位置右侧的一个格子内,玩家可以在任意时刻结束游戏,得分为曾经到达的格子的分数之和。

现在小R研发了一款跳房子机器人 ,但这个机器人每次跳跃的距离都固定为d。你可以花费g改装这个机器人,使其每一步的跳跃距离变为[max(1, d - g),  d + g]范围内的任一整数。现在小R期望获得至少k分,求改造机器人需要的最小花费。若不能获得至少k分,则输出-1。

输入

输入包含n + 1行。

第一行为三个正整数,ndk,分别描述格子的数量、机器人的初始跳跃距离、希望至少获得的分数。

接下来n行,每行两个用空格隔开的数字xi, si,表示第i个格子到达起点的距离和它的分数,保证xi按照递增顺序给出,保证任意一个位置上只有一个格子,保证每个格子只给出一次。

输出

输出共一行,包含一个整数。若可以获得至少k分,则输出改装所需的最小花费,否则输出-1

样例输入

7 4 10
2 6
5 -3
10 3
11 -3
13 1
17 6
20 2

样例输出

2

提示


对于20%的数据,保证n <= 10;



对于50%的数据,保证n <= 500;



另有30%的数据,保证d = 1



对于100%的数据,保证1 <=  n <=  500000, 1 <=  d <=  2000, 1 <= xi, k <= 10^9,| si | <= 100000;

[提交][状态]