class PriorityQueue
    @heap
    @size
    def initialize()
        @heap = Array.new()
        @size = 0
    end

    def push(x)
        i = @size
        @size+=1
        @heap.append(x)
        while i>0 do
            par = (i-1)/2
            break if(@heap[par]<=x)
            @heap[i] = @heap[par]
            i = par
        end

        @heap[i] = x
    end

    def pop()
        ret = @heap[0]
        @size -= 1
        x = @heap[@size]
        i = 0
        while 2*i + 1<@size do
            a = 2*i+1
            b = 2*i+2
            a = b if b<@size and @heap[b] < @heap[a]
            break if @heap[a] >= x

            @heap[i] = @heap[a]
            i = a
        end

        @heap[i] = x
        @heap.pop

        return ret
    end

    def top()
        return @heap[0]
    end

    def size()
        return @size
    end

    def empty()
        return @size == 0
    end
end

#高橋くんは N個の品物を1個ずつ順番に買う予定です。
#i番目に買う品物の値段は A_i円です。
#高橋くんは M枚の割引券を持っています。
#品物を買う際に割引券を好きな枚数使うことができます。
#X円の品物を買う際に 
#Y枚の割引券を使った場合、その品物を 
#X/2^Y円(小数点以下切り捨て)で買うことができます。
#最小で何円あれば全ての品物を買うことができるでしょうか。

#input
#N M
#A_1 A_2 ... A_N
n,m = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)

pq = PriorityQueue.new()

for x in a do
    pq.push(-x)
end
m.times do
    x = pq.pop()
    x+=1 if x&1 == 1
    x /= 2
    pq.push(x)
end

ans = 0
while !pq.empty do
    ans += -pq.pop()
end

puts ans