A41309.跳格子
普及/提高-
官方
通过率:74.07%
时间限制:1.00s
内存限制:256MB
题目描述
假期到了,你和你的同伴们玩一个跳格子游戏。
这个游戏由30001个格子组成。 这些格子沿一条线均匀分布,从西到东编号为0到30000,每个格子的距离都是单位长度。
众所周知,格子游戏肯定要找宝藏。格子游戏一共藏有n颗宝石,第i颗宝石位于编号为ai的格子上。
现在游戏的起点为0号格子,凭借着超强的跳跃能力,你会按照以下方式进行跳跃:
- 首先,你会从0号格子跳到d号格子。
- 第二步开始,你将按照以下规则继续跳跃: 令l为上一次跳跃的长度,那么这一次跳跃,你向前跳跃的长度只能是l − 1、l 或 l + 1。限制:一次跳跃的长度必须为正,即当l = 1时,你不能进行长度为0的跳转。你随时可以自己决定结束游戏。
如果你到了一个有宝石的格子,你会收集这个格子上的宝石。请问,你最多可以收集到多少宝石。
输入格式
第一行有两个整数n,d,意义如题。
第二行有n个整数,分别是a1,a2,⋯,an。
输出格式
输出一个整数,表示最多可以收集到的宝石数目。
输入输出样例
输入#1
4 10 10 21 27 27
输出#1
3
输入#2
8 8 9 19 28 36 45 55 66 78
输出#2
6
说明/提示
【样例解释】
样例1路线:0 -> 10(1个宝石) -> 19 -> 27(2个宝石)。
样例2路线:0 -> 8 -> 15 -> 21 -> 28(1个宝石) -> 36(1个宝石) -> 45(1个宝石) -> 55(1个宝石) -> 66(1个宝石) -> 78(1个宝石)。
【数据范围】
对于前30%数据,1≤d≤a1≤a2≤⋯≤an≤15;
对于前70%的数据,1≤d≤a1≤a2≤⋯≤an≤5000;
对于100%的数据,1≤n≤30000,1≤d≤a1≤a2≤⋯≤an≤30000。