Problem:
Score : 400 points

Problem Statement

You are given a sequence A_1, A_2, ..., A_N and an integer K.

Print the maximum possible length of a sequence B that satisfies the following conditions:

B is a (not necessarily continuous) subsequence of A.

For each pair of adjacents elements of B, the absolute difference of the elements is at most K.

Constraints

1 \leq N \leq 300,000

0 \leq A_i \leq 300,000

0 \leq K \leq 300,000

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N K
A_1
A_2
:
A_N

Output

Print the answer.

Sample Input 1

10 3
1
5
4
3
8
6
9
7
2
4

Sample Output 1

7

For example, B = (1, 4, 3, 6, 9, 7, 4) satisfies the conditions.

It is a subsequence of A = (1, 5, 4, 3, 8, 6, 9, 7, 2, 4).

All of the absolute differences between two adjacent elements (|1-4|, |4-3|, |3-6|, |6-9|, |9-7|, |7-4|) are at most K = 3.

Solution in Kotlin (1.3.71) (judge verdict: Wrong Answer)


import kotlin.math.*
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*


private var fs = BufferedReader(InputStreamReader(System.`in`))
private fun readLn() = fs.readLine()!! // string line
private fun readStrings() = readLn().split(" ") // list of strings
private fun readLong() = readLn().toLong()
private fun readLongs() = readStrings().map { it.toLong() } // list of ints
private fun readInt() = readLn().toInt() // single int
private fun readInts() = readStrings().map { it.toInt() } // list of ints
fun main() {
//    val t = readInt()
//    for (tt in 0 until t) {
        solveB()
//    }
//    println("absdaabc")
}
fun solveB() {
    var (N,K) = readInts()
    var ans = 0
    var last = 0
    var bool = false
    var list = mutableListOf<Int>()
    loop@for(i in 1..N){
        var a = readInt()
        if(bool){
            if(abs(a-last) <= K){
                ans++
                last = a
                continue
            }
        }
        else{
            for(j in 0 until list.size){
                if(abs(list[j] - a) <= K){
                    bool = true
                    ans += 2
                    last = a
                    continue@loop
                }
            }
            list.add(a)
        }
    }
    println(ans)
}