Phiếu giảm giá

Xem dạng PDF

Gửi bài giải

Điểm: 600,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạn cần mua ~N~ món hàng trong siêu thị, món hàng thứ ~i~ có giá ban đầu là ~A_i~ đồng. Bạn đang có trong tay ~K~ phiếu giảm giá.

Mỗi phiếu giảm giá có thể được sử dụng cho một món hàng bất kỳ. Khi áp dụng 1 phiếu giảm giá lên món hàng có giá ~X~, giá của món hàng đó sẽ giảm đi một nửa (tức là giá mới sẽ bằng phần nguyên của phép chia ~X / 2~, hay ~\lfloor X / 2 \rfloor~).

Lưu ý: Bạn hoàn toàn có thể sử dụng nhiều phiếu giảm giá cho cùng một món hàng để giá giảm sâu hơn (ví dụ: áp dụng 2 phiếu cho giá 30 đồng ~\rightarrow~ giảm còn 15 đồng ~\rightarrow~ giảm tiếp còn 7 đồng).

Hãy tính tổng số tiền tối thiểu bạn phải trả để mua hết ~N~ món hàng trên.

Dữ liệu

  • Dòng đầu tiên chứa hai số nguyên dương ~N~ và ~K~ (~1 \le N, K \le 10^5~).
  • Dòng thứ hai chứa ~N~ số nguyên ~A_1, A_2, ..., A_N~ (~0 \le A_i \le 10^9~), cách nhau bởi khoảng trắng.

Kết quả

In ra một số nguyên duy nhất là tổng số tiền tối thiểu cần trả. (Kết quả có thể vượt quá giới hạn số nguyên 32-bit).

Ví dụ

Input
3 2
10 20 30
Output
35
Giải thích

Có 3 món đồ (giá 10, 20, 30) và 2 phiếu giảm giá. Cách dùng tối ưu nhất:

  • Dùng 1 phiếu cho món 30, giá giảm còn 15.
  • Dùng 1 phiếu cho món 20, giá giảm còn 10.
  • Tổng số tiền phải trả: ~10 + 10 + 15 = 35~.

(Lưu ý: Nếu dồn cả 2 phiếu cho món 30, nó sẽ giảm còn 15, rồi giảm tiếp còn 7. Tổng tiền khi đó là ~10 + 20 + 7 = 37~, không tối ưu bằng cách trên).


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.