Increase Array

Xem dạng PDF

Gửi bài giải


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

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Dãy số ~a_1, a_2,..., a_n~ được gọi là tăng nếu ~a_1 < a_2 < … < a_n~.

Bạn được cho một dãy số ~b_1, b_2,..., b_n~ và một số nguyên dương ~d~. Trong mỗi lần thao tác, bạn chọn một phần tử của dãy số và cộng thêm ~d~ vào nó. Số thao tác ít nhất là bao nhiêu để biến đổi dãy số đã cho trở thành dãy số tăng.

Input

Dòng đầu tiên là số nguyên ~n~ và ~d~ ~(1 \le n \le 10^6, 1 \le d \le 10^9)~

Dòng tiếp theo là ~n~ số nguyên ~b_i~ ~(1 \le b_i \le 10^9 )~

Output

In ra một dòng duy nhất là số thao tác tối thiểu để biến đổi dãy số đã cho trở thành dãy số tăng.

Sample Input

4 2
1 3 3 2

Sample Output

3

Giải thích

dãy ~b=[1, 3, 3, 2]~ và ~d = 2~. Số thao tác ít nhất để biến đổi dãy số trở thành dãy số tăng là 3 và một trong các cách thực hiện như sau:

  • Thao tác 1: cộng thêm ~d~ vào phần tử thứ ba, dãy trở thành ~[1,3, 5, 2]~
  • Thao tác 2: cộng thêm ~d~ vào phần từ thứ tư, dãy trở thành ~[1,3, 5, 4]~
  • Thao tác 3: cộng thêm ~d~ vào phần từ thứ tư, dãy trở thành ~[1,3, 5, 6]~ và là dãy số tăng.

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.