Пример #1
0
    static void Main()
    {
        var h = Read();
        int n = h[0], k = h[1];
        var a = new int[n].Select(_ => int.Parse(Console.ReadLine())).ToArray();

        var kM = 300000;

        var r  = 0L;
        var st = new ST_RangeMax(kM + 1);

        for (int i = 0; i < n; i++)
        {
            st.Set(Math.Max(0, a[i] - k), Math.Min(kM + 1, a[i] + k + 1), st[a[i]] + 1);
        }

        for (int x = 0; x <= kM; x++)
        {
            ST.Chmax(ref r, st[x]);
        }
        Console.WriteLine(r);
    }