fbpx

Problema #603 – Vraja – Rezolvari PBInfo

de Mihai-Alexandru

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;
}
Comentarii

S-ar putea sa iti placa