#CF474E. 柱子

柱子

柱子

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

题目描述

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

1≤i1<i2<⋯<ik≤n.1\le i_1<i_2<\cdots<i_k\le n.

它能从柱子 ii 跳到柱子 jj,当且仅当 i<ji<j 且 ∣hi−hj∣≥d|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

数据范围

  • 1≤n≤1051\le n\le 10^5;
  • 0≤d≤1090\le d\le 10^9;
  • 1≤hi≤10151\le h_i\le 10^{15}。
子任务编号 分值 特殊限制
1 10 d=0d=0
2 20 h1≤h2≤⋯≤hnh_1\le h_2\le\cdots\le h_n
3 30 n≤2000n\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 也是合法的最长序列。