Khai thác vàng

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 900 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn sở hữu một mảng \(A\) gồm \(N\) mỏ vàng nằm trên một đường thẳng, \(A_i\) là lượng vàng tại mỏ thứ \(i\). Bạn muốn chọn một đoạn liên tiếp các mỏ từ \(L\) đến \(R\) để khai thác. Tuy nhiên, việc duy trì khai thác tốn kém chi phí. Với mỗi mỏ trong đoạn được chọn, bạn mất \(K\) đơn vị chi phí vận hành.

Lợi nhuận ròng được tính bằng công thức:

\[ \text{Profit}(L, R) = \sum_{i=L}^{R} A_i - K \cdot (R - L + 1) \]

Hãy tìm lợi nhuận ròng lớn nhất có thể đạt được (có thể chọn đoạn rỗng với lợi nhuận \(0\)).

Input

  • Dòng 1: Hai số nguyên \(N\)\(K\) (\(1 \le N \le 10^5, 0 \le K \le 10^9\)).
  • Dòng 2: \(N\) số nguyên \(A_1, A_2, \dots, A_N\) (\(0 \le A_i \le 10^9\)).

Output

  • Một số nguyên duy nhất là lợi nhuận ròng lớn nhất.

Example

Test 1

Input
5 4
6 2 5 8 1
Output
5
Note

Chọn đoạn \(\{5, 8\}\) (vị trí \(3, 4\)). Tổng vàng: \(5 + 8 = 13\). Chi phí: \(2 \cdot 4 = 8\). Lợi nhuận: \(13 - 8 = 5\).

Scoring

  • Subtask \(1\) (\(40\%\) số điểm): \(N \le 1000\).
  • Subtask \(2\) (\(60\%\) số điểm): \(N \le 10^5\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.