Example #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_RUQ(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);
        }
        for (int x = 0; x <= kM; x++)
        {
            Chmax(ref r, st.Get(x));
        }

        Console.WriteLine(r);
    }
Example #2
0
    static void Main()
    {
        var r = new List <long>();
        var h = Read();
        var n = h[0];

        var st = new ST_RUQ(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[1] + 1));
            }
        }
        Console.WriteLine(string.Join("\n", r));
    }