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

def check a,i
  return true if a > A[-P]
  return false if A[-P] > a + M
  if V < P
    return A[-P] < a + M
  end

  a = a + M
  v = V - P
  point = v * M
  A[i+1,N-i-1].each do |aa|
    if a > aa
      point -= (a-aa)
    end
  end
  return true if point <= 0
  A[0,i].each do |aa|
    diff = a - aa
    point -= (diff > M) ? M : diff
  end
  return point < 0
end
line = A.bsearch.with_index {|a, i| check a,i }
puts A.find_all{|a| a >= line}.size