n, m, v, pp = gets.split.map(&:to_i)
a = gets.split.map(&:to_i).sort_by {|e| -e}

i = pp
while i < n
    break if a[i] + m < a[pp-1]

    s = m * (pp - 1) + m * (n - i)
    (pp-1).upto(i-1) do |j|
        s += [a[i] + m - a[j], m].min
        break if s >= m * v
    end

    break if s < m * v
    i += 1
end

puts i