#A666P275. 银河特工训练营

银河特工训练营

银河高级特工训练营

问题描述:

在未来世界,银河特工正在进行高强度训练,目标是成为星舰防御系统的操作专家。其中一项重要训练是反应协调测试,特工需要在不被自动防御炮台反击命中的前提下,尽可能多地进行攻击操作。

银河战士小博进入模拟舱,准备接受挑战。模拟舱在若干个预定的时间节点开放攻击窗口,小博可以选择这些时间点之一发起攻击。每次在时间点 XX 发起攻击后,炮台会在 X+DX+D 的时间点进行一次自动反击,小博此时需要闪避。

然而,小博无法在同一时间既攻击又闪避,所以他必须规划好攻击时间,确保在任何反击发生时,他没有攻击任务。

请你帮小博计算,在 确保不会被击中的前提下,他最多可以执行多少次攻击操作。


输入格式

  • 第一行包含两个整数 NN, DD
    1N1051 \le N \le 10^5, 1D1091 \le D \le 10^9
    表示攻击窗口的总数和每次攻击后炮台反击的延迟时间。
  • 第二行包含 NN 个严格递增的整数 A1,A2,,ANA_1, A_2, \dots, A_N,表示攻击窗口的时间点,满足
    1A1<A2<<AN1091 \le A_1 < A_2 < \cdots < A_N \le 10^9

输出格式

输出一个整数,表示小博最多可以攻击多少次,且不会被任何一次炮台反击击中。


样例数据1

5 2
1 3 4 6 8
3

样例1说明:

  • 小博在时间点 1 攻击,反击将在 3 发生,小博此时没有攻击,安全。
  • 接着在时间点 4 攻击,反击将在 6 发生,也安全。
  • 再在时间点 8 攻击,反击将在 10 发生,依然安全。

所以最多可以攻击 3 次。


样例数据 2

6 3
2 5 6 9 12 14
4

说明:

我们尝试选择攻击时间点,确保每次攻击后的 D=3D = 3 秒内没有其他攻击。

  • 第一次选择时间点 2 攻击,反击时间为 2 + 3 = 5,所以时间点 5 不能攻击。
  • 接着选择时间点 6 攻击,反击时间为 6 + 3 = 9,所以时间点 9 不能攻击。
  • 然后选择时间点 12 攻击,反击时间为 15
  • 时间点14不受影响,可以攻击。

最终选择攻击时间点:2, 6, 12,14,共 4 次攻击


数据范围:

对于10% 的数据, 1N1001 \le N \le 100, 1D1031 \le D \le 10^31Ai1051 \le A_i \le 10^5,且所有的Ai+D=Ai+1A_i+D=A_{i+1}

对于另外40%的数据, 1N1051 \le N \le 10^5, 1D1051 \le D \le 10^51Ai1051 \le A_i \le 10^5

对于100%的数据,1N1051 \le N \le 10^5, 1D1091 \le D \le 10^91Ai10181 \le A_i \le 10^{18}