在地上确定一个起点,然后在起点右侧画n个格子,这些格子分布在一条直线上,且每个格子都有一定的分数,表示到达这个格子时可以获得的分数。玩家从起点开始向右跳,每次都必须落在当前位置右侧的一个格子内,玩家可以在任意时刻结束游戏,得分为曾经到达的格子的分数之和。
现在小R研发了一款跳房子机器人 ,但这个机器人每次跳跃的距离都固定为d。你可以花费g改装这个机器人,使其每一步的跳跃距离变为[max(1, d - g), d + g]范围内的任一整数。现在小R期望获得至少k分,求改造机器人需要的最小花费。若不能获得至少k分,则输出-1。
输入包含n + 1行。
第一行为三个正整数,n,d,k,分别描述格子的数量、机器人的初始跳跃距离、希望至少获得的分数。
接下来n行,每行两个用空格隔开的数字xi, si,表示第i个格子到达起点的距离和它的分数,保证xi按照递增顺序给出,保证任意一个位置上只有一个格子,保证每个格子只给出一次。
输出共一行,包含一个整数。若可以获得至少k分,则输出改装所需的最小花费,否则输出-1。
对于20%的数据,保证n <= 10;
对于50%的数据,保证n <= 500;
另有30%的数据,保证d = 1;
对于100%的数据,保证1 <= n <= 500000, 1 <= d <= 2000, 1 <= xi, k <= 10^9,| si | <= 100000;