BÀI TẬP 24 [C++]: BÁN BITCOIN

Bitcoin là một loại tiền mã hóa, được phát minh bởi Satoshi Nakamoto dưới dạng phần mềm mã nguồn mở từ năm 2009. Bitcoin có thể được trao đổi trực tiếp bằng thiết bị kết nối Internet mà không cần thông qua một tổ chức tài chính trung gian nào.

            Sắn tìm hiểu và rất thích BITCOIN, cậu dự đoán giá của Bitcoin trong N ngày tiếp theo là d1, d2, …, dn (đơn vị USD). Cậu ta nhờ bố giúp đỡ để có thể thu lời từ việc mua bán Bitcoin. Bố cậu ta có thể cho cậu ta mượn 1 đồng Bitcoin với hai điều kiện:

            - Một là phải trả phí: Mượn một ngày trả phí K đô la. Khi trả lại phải đúng 1 Bitcoin và tiền lời.

            - Hai là cho mượn bất cứ ngày nào nhưng chỉ được bán đi và mua lại một lần duy nhất để kiếm lời.

            Sắn đã có kế hoạch cho riêng mình để thu lời. Cậu ấy có thể bán ra đồng Bitcoin vào một ngày bất kỳ nào đó nếu muốn và mua lại vào một ngày nào đó sau ngày bán hoặc là không mua bán lần nào nếu không thu được tiền lời. Đố bạn Sắn sẽ thu được nhiều nhất bao nhiêu tiền nếu có kế hoặc bán tối ưu.

Dữ liệu nhập:

   - Dòng 1 là hai số nguyên N và K (1 ≤ N ≤ 2*105; 0 ≤ K ≤ 105)

   - Dòng 2 là giá Bitcoin trong n ngày tiếp theo d1, d2, …, dn. (0 ≤ di ≤ 108)

Kết quả: In ra một số nguyên duy nhất là số tiền lời tối đa mà Sắn thu được.

Ví dụ:

Input

Output

3 1

10 8 5

3

Trong ví dụ trên:

            - Sắn bán ra ở ngày 1 thu được 10 USD

            - Sắn mua lại Bitcoin ở ngày thứ 3 mất 5 USD

            - Tiền lời thu được: 10 – 5 – 2 = 3 USD (2 USD là tiền lãi phải trả cho bố sau 2 ngày mượn).

CODE: 


Nhãn:

Đăng nhận xét

[blogger]

Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.
Javascript DisablePlease Enable Javascript To See All Widget