#CF474E. 柱子

柱子

柱子

  • 时间限制:1 秒
  • 内存限制:256 MiB

题目描述

土拨鼠发现了一排 nn 根柱子,第 ii 根柱子的高度为 hih_i 米。它从某根柱子 i1i_1 出发,随后依次跳到 i2,,iki_2,\ldots,i_k,其中

1i1<i2<<ikn.1\le i_1<i_2<\cdots<i_k\le n.

它能从柱子 ii 跳到柱子 jj,当且仅当 i<ji<jhihjd|h_i-h_j|\ge d

请找出一条长度最大的跳跃序列并输出。

输入格式

第一行包含两个整数 n,dn,d

第二行包含 nn 个整数 h1,h2,,hnh_1,h_2,\ldots,h_n

输出格式

第一行输出最大长度 kk

第二行输出 kk 个严格递增的柱子下标 i1,i2,,iki_1,i_2,\ldots,i_k。相邻两个所选柱子的高度差绝对值必须不少于 dd

若存在多条最长序列,输出任意一条即可。

样例输入 1

5 2
1 3 6 7 4

样例输出 1

4
1 2 3 5

样例输入 2

10 3
2 1 3 6 9 11 7 3 20 18

样例输出 2

6
1 4 6 7 8 9

数据范围

  • 1n1051\le n\le 10^5
  • 0d1090\le d\le 10^9
  • 1hi10151\le h_i\le 10^{15}
子任务编号 分值 特殊限制
1 10 d=0d=0
2 20 h1h2hnh_1\le h_2\le\cdots\le h_n
3 30 n2000n\le 2000
4 40 无特殊限制

样例说明

第一组样例中,高度依次为 1,3,6,41,3,6,4 的下标序列 1,2,3,51,2,3,5 合法且最长;1,2,4,51,2,4,5 也是合法的最长序列。