# PBinfo #603 – Vraja – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

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ă.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int v[1005], n, h;
int main(){
	cin  >> n >> h;
	for(int i = 1 ; i <= n ; ++i)
		cin >> v[i];
	int cnt = 0;
	for(int i = n - 1 ; i > 0 ; i --)
		if(v[i] < v[i+1])
		{
			int dif = v[i+1] - v[i];
			int nrv = dif / h;
			if(nrv * h < dif)
				nrv ++;
			cnt += nrv;
			v[i] += nrv * h;
		}
	cout << cnt;
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/603)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/603/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-603/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
