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); }
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)); }