Problem:
Score : 400 points

Problem Statement

Takahashi is going to buy N items one by one.

The price of the i-th item he buys is A_i yen (the currency of Japan).

He has M discount tickets, and he can use any number of them when buying an item.

If Y tickets are used when buying an item priced X yen, he can get the item for \frac{X}{2^Y} (rounded down to the nearest integer) yen.

What is the minimum amount of money required to buy all the items?

Constraints

All values in input are integers.

1 \leq N, M \leq 10^5

1 \leq A_i \leq 10^9

Input

Input is given from Standard Input in the following format:

N M
A_1 A_2 ... A_N

Output

Print the minimum amount of money required to buy all the items.

Sample Input 1

3 3
2 13 8

Sample Output 1

9

We can buy all the items for 9 yen, as follows:

Buy the 1-st item for 2 yen without tickets.

Buy the 2-nd item for 3 yen with 2 tickets.

Buy the 3-rd item for 4 yen with 1 ticket.

Sample Input 2

4 4
1 9 3 5

Sample Output 2

6

Sample Input 3

1 100000
1000000000

Sample Output 3

0

We can buy the item priced 1000000000 yen for 0 yen with 100000 tickets.

Sample Input 4

10 1
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000

Sample Output 4

9500000000

Solution in Fortran (gfortran v4.8.4) (judge verdict: Time Limit Exceeded)

program kadai
implicit none
integer(8)  ::  n,m
integer(8),allocatable  ::  a(:)
integer(8)  ::  loc,i,j

read(*,*) n,m
allocate(a(n))
read(*,*) a

call qsort(a)

do i=1,m
    a(1)=a(1)/2
    do j=1,n-1
        if (a(j)>a(j+1) .or. a(j)==a(j+1)) then
            exit
        end if
        call swap(a(j),a(j+1))
    end do
end do

write(*,*) sum(a)


stop
contains

subroutine swap(a,b)
    implicit none
    integer(8),intent(inout)  ::  a,b
    integer(8)  ::  c
    c=a
    a=b
    b=c
end subroutine swap

subroutine qsort(x)
    implicit none
    integer(8), intent(inout)  ::  x(:)
    integer(8)  ::  first,last
    first=1
    last=size(x)
    call q2sort(x,first,last)
    return
end subroutine qsort

recursive subroutine q2sort(x,first,last)
    implicit none
    integer(8), intent(inout)  ::  x(:)
    integer(8), intent(inout) ::  first,last
    integer(8)  ::  fir, las
    integer(8)  ::  i,j
    integer(8)  ::  n
    n=x((first+last)/2)
    i=first
    j=last
    do
    do while (x(i)>n)
    i=i+1
    end do
    do while(x(j)<n)
    j=j-1
    end do
    if (i>j .or. i==j) then
    exit
    end if
    call swap(x(i),x(j))
    i=i+1
    j=j-1
    end do
    if (first<i-1) then
    las=i-1
    call q2sort(x,first,las)
    end if
    if (last>j+1) then
    fir=j+1
    call q2sort(x,fir,last)
    end if
end subroutine q2sort
end program kadai