public static int Solve(int[] a, int d)
        {
            int   result = 0;
            Treap treap  = new Treap();

            for (int i = 0; i < a.Length && i < d; i++)
            {
                treap.Add(a[i]);
            }

            int median;

            for (int i = d; i < a.Length; i++)
            {
                if (d % 2 == 1)
                {
                    median = treap.Get(d / 2 + 1) * 2;
                }
                else
                {
                    median = treap.Get(d / 2) + treap.Get(d / 2 + 1);
                }

                if (a[i] >= median)
                {
                    result++;
                }
                treap.Add(a[i]);
                treap.Remove(a[i - d]);
            }

            return(result);
        }