Language: C++

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

Compiler output:
a.cc:2:5: error: stray '@' in program
    2 |     @heap
      |     ^
a.cc:3:5: error: stray '@' in program
    3 |     @size
      |     ^
a.cc:5:9: error: stray '@' in program
    5 |         @heap = Array.new()
      |         ^
a.cc:6:9: error: stray '@' in program
    6 |         @size = 0
      |         ^
a.cc:10:13: error: stray '@' in program
   10 |         i = @size
      |             ^
a.cc:11:9: error: stray '@' in program
   11 |         @size+=1
      |         ^
a.cc:12:9: error: stray '@' in program
   12 |         @heap.append(x)
      |         ^
a.cc:15:22: error: stray '@' in program
   15 |             break if(@heap[par]<=x)
      |                      ^
a.cc:16:13: error: stray '@' in program
   16 |             @heap[i] = @heap[par]
      |             ^
a.cc:16:24: error: stray '@' in program
   16 |             @heap[i] = @heap[par]
      |                        ^
a.cc:20:9: error: stray '@' in program
   20 |         @heap[i] = x
      |         ^
a.cc:24:15: error: stray '@' in program
   24 |         ret = @heap[0]
      |               ^
a.cc:25:9: error: stray '@' in program
   25 |         @size -= 1
      |         ^
a.cc:26:13: error: stray '@' in program
   26 |         x = @heap[@size]
      |             ^
a.cc:26:19: error: stray '@' in program
   26 |         x = @heap[@size]
      |                   ^
a.cc:28:23: error: stray '@' in program
   28 |         while 2*i + 1<@size do
      |                       ^
a.cc:31:24: error: stray '@' in program
   31 |             a = b if b<@size and @heap[b] < @heap[a]
      |                        ^
a.cc:31:34: error: stray '@' in program
   31 |             a = b if b<@size and @heap[b] < @heap[a]
      |                                  ^
a.cc:31:45: error: stray '@' in program
   31 |             a = b if b<@size and @heap[b] < @heap[a]
      |                                             ^
a.cc:32:22: error: stray '@' in program
   32 |             break if @heap[a] >= x
      |                      ^
a.cc:34:13: error: stray '@' in program
   34 |             @heap[i] = @heap[a]
      |             ^
a.cc:34:24: error: stray '@' in program
   34 |             @heap[i] = @heap[a]
      |                        ^
a.cc:38:9: error: stray '@' in program
   38 |         @heap[i] = x
      |         ^
a.cc:39:9: error: stray '@' in program
   39 |         @heap.pop
      |         ^
a.cc:45:16: error: stray '@' in program
   45 |         return @heap[0]
      |                ^
a.cc:49:16: error: stray '@' in program
   49 |         return @size
      |                ^
a.cc:53:16: error: stray '@' in program
   53 |         return @size == 0
      |                ^
a.cc:57:2: error: invalid preprocessing directive #\U00009ad8\U00006a4b\U0000304f\U00003093\U0000306f
   57 | #高橋くんは N個の品物を1個ずつ順番に買う予定です。
      |  ^~~~~~~~~~
a.cc:57:13: error: extended character 。 is not valid in an identifier
   57 | #高橋くんは N個の品物を1個ずつ順番に買う予定です。
      |             ^
a.cc:58:2: error: invalid preprocessing directive #i\U0000756a\U000076ee\U0000306b\U00008cb7\U00003046\U000054c1\U00007269\U0000306e\U00005024\U00006bb5\U0000306f
   58 | #i番目に買う品物の値段は A_i円です。
      |  ^~~~~~~~~~~~~~~~~~~~~~~
a.cc:58:26: error: extended character 。 is not valid in an identifier
   58 | #i番目に買う品物の値段は A_i円です。
      |                          ^
a.cc:59:2: error: invalid preprocessing directive #\U00009ad8\U00006a4b\U0000304f\U00003093\U0000306f
   59 | #高橋くんは M枚の割引券を持っています。
      |  ^~~~~~~~~~
a.cc:59:13: error: extended character 。 is not valid in an identifier
   59 | #高橋くんは M枚の割引券を持っています。
      |             ^
a.cc:60:2: error: extended character 。 is not valid in an identifier
   60 | #品物を買う際に割引券を好きな枚数使うことができます。
      |  ^
a.cc:60:2: error: invalid preprocessing directive #\U000054c1\U00007269\U00003092\U00008cb7\U00003046\U0000969b\U0000306b\U00005272\U00005f15\U00005238\U00003092\U0000597d\U0000304d\U0000306a\U0000679a\U00006570\U00004f7f\U00003046\U00003053\U00003068\U0000304c\U00003067\U0000304d\U0000307e\U00003059\U00003002
   60 | #品物を買う際に割引券を好きな枚数使うことができます。
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:61:2: error: invalid preprocessing directive #X\U00005186\U0000306e\U000054c1\U00007269\U00003092\U00008cb7\U00003046\U0000969b\U0000306b
   61 | #X円の品物を買う際に
      |  ^~~~~~~~~~~~~~~~~~~
a.cc:62:2: error: extended character 、 is not valid in an identifier
   62 | #Y枚の割引券を使った場合、その品物を
      |  ^
a.cc:62:2: error: invalid preprocessing directive #Y\U0000679a\U0000306e\U00005272\U00005f15\U00005238\U00003092\U00004f7f\U00003063\U0000305f\U00005834\U00005408\U00003001\U0000305d\U0000306e\U000054c1\U00007269\U00003092
   62 | #Y枚の割引券を使った場合、その品物を
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:63:2: error: invalid preprocessing directive #X
   63 | #X/2^Y円(小数点以下切り捨て)で買うことができます。
      |  ^
a.cc:63:29: error: extended character 。 is not valid in an identifier
   63 | #X/2^Y円(小数点以下切り捨て)で買うことができます。
      |                             ^
a.cc:64:2: error: extended character 。 is not valid in an identifier
   64 | #最小で何円あれば全ての品物を買うことができるでしょうか。
      |  ^
a.cc:64:2: error: invalid preprocessing directive #\U00006700\U00005c0f\U00003067\U00004f55\U00005186\U00003042\U0000308c\U00003070\U00005168\U00003066\U0000306e\U000054c1\U00007269\U00003092\U00008cb7\U00003046\U00003053\U00003068\U0000304c\U00003067\U0000304d\U0000308b\U00003067\U00003057\U00003087\U00003046\U0000304b\U00003002
   64 | #最小で何円あれば全ての品物を買うことができるでしょうか。
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:66:2: error: invalid preprocessing directive #input
   66 | #input
      |  ^~~~~
a.cc:67:2: error: invalid preprocessing directive #N
   67 | #N M
      |  ^
a.cc:68:2: error: invalid preprocessing directive #A_1
   68 | #A_1 A_2 ... A_N
      |  ^~~
a.cc:3:6: error: expected initializer before 'size'
    3 |     @size
      |      ^~~~