示例#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 st = new ST_RUMQ(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.Get(a[i]) + 1);
        }
        Console.WriteLine(st.Get(0, kM + 1));
    }
示例#2
0
    static void Main()
    {
        var r = new List <long>();
        var h = Read();
        var n = h[0];

        var st = new ST_RUMQ(n);

        st.Set(0, n, int.MaxValue);

        for (int i = 0; i < h[1]; i++)
        {
            var q = Read();
            if (q[0] == 0)
            {
                st.Set(q[1], q[2] + 1, q[3]);
            }
            else
            {
                r.Add(st.Get(q[1], q[2] + 1));
            }
        }
        Console.WriteLine(string.Join("\n", r));
    }