N, M, V, P = gets.split.map(&:to_i)
A = gets.split.map(&:to_i).sort

def f(x)
  vote_cnt = M * V - M * (P - 1)

  return false if x < A[-P]

  0.upto(N - P - 1) do |i|
    a = A[i]

    break if x <= a
    break if vote_cnt <= 0

    diff = x - a

    if diff >= M
      vote_cnt -= M
    else
      vote_cnt -= diff
    end
  end

  vote_cnt <= 0
end

ng = 0
ok = 10 ** 11

while (ng - ok).abs > 1
  mid = (ng + ok) / 2

  if f(mid)
    ok = mid
  else
    ng = mid
  end
end

puts A.count { |a| a + M >= ok }

