[Quảng Ninh - 23 - 24] Dãy số tăng


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 256M

Problem type

Dãy số a1, a2, ..., an được gọi là tăng nếu a1 < a2 < ... < an.
Bạn được cho một dãy số b1, b2, ..., bn 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ó.</p>

Hỏi 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?

Dữ liệu vào (file INCR.INP):

Dòng đầu tiên chứa hai số nguyên n và d (1 ≤ n ≤ 105; 1 ≤ d ≤ 109).
Dòng thứ hai chứa n số nguyên tương ứng là dãy b1, b2, ..., bn (1 ≤ bi ≤ 109).

Dữ liệu ra (file INCR.OUT):

Gồm một số nguyên duy nhất là số thao tác ít nhất để biến đổi dãy số đã cho trở thành dãy tăng.

Ví dụ

INCR.INP

4 2
1 3 3 2

INCR.OUT

3

Giải thích
Trong ví dụ trên, ta có dãy số b là: 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ới 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 thành: 1, 3, 5, 2.
Thao tác 2: cộng thêm d vào phần tử thứ tư, dãy thành: 1, 3, 5, 4.
Thao tác 3: cộng thêm d vào phần tử thứ tư, dãy thành: 1, 3, 5, 6 → dãy tăng.

Giới hạn

Có 30% số test ứng với 30% số điểm thỏa mãn 1 ≤ n, bi ≤ 102.
Có 30% số test khác ứng với 30% số điểm thỏa mãn 1 ≤ n ≤ 103 và 1 ≤ d, bi ≤ 106.
Có 40% số test còn lại với 40% số điểm không có thêm ràng buộc nào.


Comments

There are no comments at the moment.