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