module IntMap = Map.Make (struct
  type t = int
  let compare = compare
end)

let () = Scanf.scanf "%d %d\n" @@ fun n k ->
  (* [a_i, ... a_j]の平均値がk iff [a_i - k, ... , a_j - k]の合計値が0 *)
  let as_ = Array.init n @@ fun _ -> Scanf.scanf "%d\n" @@ fun a -> a - k in
  Printf.printf "%d\n" @@ snd @@ Array.fold_left (fun ((m, offset), acc) a ->
    (* mの全ての要素にaを加算する代わりに，offsetにaを加算する *)
    (* x∈mの真の値はx+offsetになる *)
    let offset = offset + a in
    let m = IntMap.add (a - offset) (1 + try IntMap.find (a - offset) m with Not_found -> 0) m in
    (m, offset),
    (* 真の値が0以上，つまり-offset - 1 < xなるx∈mの数を数える *)
    let (_, _, gt) = IntMap.split (~-offset - 1) m in
    acc + IntMap.fold (fun _ -> ( + )) gt 0) ((IntMap.empty, 0), 0) as_
  
