CF505C Mr. Kitayuta, the Treasure Hunter
题目描述
秀石群岛是郁潭海域中由 $30001$ 个小岛组成的列岛。这些岛屿沿着直线均匀分布,自西向东编号为 $0$ 至 $30000$。众所周知,这些岛屿蕴藏着许多宝藏,整个秀石群岛共有 $n$ 颗宝石,其中第 i 颗宝石位于 $p_i$ 号岛屿。
北谷先生刚刚抵达 $0$ 号岛。凭借其出色的跳跃能力,他将按照以下过程在东面岛屿之间反复跳跃:
- 首先,他将从 $0$ 号岛跳到 $d$ 号岛。
- 之后,他将继续按照以下规则跳跃。设 $l$ 为上一次跳跃的距离,也就是说,如果他上一次跳跃是从 $prev$ 岛跳到 $cur$ 岛,则 $l=cur-prev$。他将向东进行距离为 $l-1$、$l$ 或 $l+1$ 的跳跃。也就是说,他将跳到 $(cur+l-1)$ 号岛、$(cur+l)$ 号岛或 $(cur+l+1)$ 号岛(如果它们存在的话)。跳跃的距离必须为正,也就是说,当 $l=1$ 时,他不能进行距离为 $0$ 的跳跃。如果没有有效的目的地,他将停止跳跃。
北谷先生将收集在此过程中经过的岛屿上的宝石。找到他可以收集的最大宝石数量。
输入格式
输入的第一行包含两个空格分隔的整数 $n$ 和 $d$($1\le n,d\le30000$),分别表示秀石群岛中的宝石数量和北谷先生第一次跳跃的距离。
接下来的 $n$ 行描述了宝石的位置。其中的第 $i$($1 \le i \le n$)包含一个整数 $p_{i}$($d\le p_{1}\le p_{2}\le …\le p_{0n}\le 30000$),表示包含第 $i$ 个宝石所在的岛的编号。
输出格式
输出北谷先生可以收集的最大宝石数量。
说明/提示
在第一个样例中,最优路径为 $0\to10$(宝石数量加 $1$)$\to 19 \to 27$(宝石数量加 $2$)$\to\cdots$
在第二个样例中,最优路径为 $0\to 8 \to 15 \to 21 \to 28$(宝石数量加 $1$)$\to 36$(宝石数量加 $1$)$\to 45$(宝石数量加 $1$)$\to 55$(宝石数量加 $1$)$\to 66$(宝石数量加 $1$)$\to 78$(宝石数量加 $1$)$\to\cdots$
在第三个样例中,最优路径为 $0\to 7 \to 13 \to 18$(宝石数量加 $1$)$\to 24$(宝石数量加 $2$)$\to 30$(宝石数量加 $1$)$\to\cdots$