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


l = 0
r = n - 1
loop do
    break if l == r
    i = (l + r) / 2

    if i < pp
        l = i + 1
    elsif a[i] + m < a[pp-1]
        r = i
    else
        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

        s < m * v ? r = i : l = i + 1
    end
end

puts l