Cerința
De-a lungul bulevardului sunt n
arbori, numerotați de la 1
la n
, pentru fiecare cunoscându-se înălțimea, exprimată în centimetri. Primarul dorește ca înălțimile arborilor să fie în ordine descrescătoare, și pentru aceasta apelează la vrăjitorul angajat al primăriei, care, pentru un anumit arbore poate să facă o vrajă astfel încât arborele să crească cu h
centimetri. Determinați numărul minim de vrăji necesare ca înălțimile arborilor să fie în ordine descrescătoare.
Date de intrare
Programul citește de la tastatură numerele n h
, iar apoi n
numere naturale, reprezentând înălțimile arborilor.
Date de ieșire
Programul va afișa pe ecran numărul C
, reprezentând numărul de vrăji necesare.
Restricții și precizări
1 ≤ n ≤ 1000
1 ≤ h ≤ 1000
- înălțimile arborilor sunt numere naturale nenule mai mici decât
1.000.000
Exemplu
Intrare
4 2 2 3 3 4
Ieșire
4
Explicație
Pentru primul arbore trebuie două vrăji, iar pentru al doilea și al treilea trebuie câte o vrajă.
#include <bits/stdc++.h> using namespace std; int main() { int n , x , cnt = 0 , a[1001]; cin >> n >> x; for(int i = 0 ; i < n ; ++i) cin >> a[i]; for(int i = n - 2 ; i >= 0 ; --i) { if(a[i+1]>a[i]) { int d = a[i+1]-a[i]; int c = d / x; if(c * x != d) c++; cnt += c; a[i] += c * x; } } cout << cnt; return 0; }