2033 - MCub
Alexandru este foarte pasionat de cuburi. Într-o zi, acesta a creat un zid format din N
turnuri de cuburi, turnul i
fiind alcătuit din H[i]
cuburi puse unul peste altul. Având acest zid, el își pune următoarea întrebare: Dacă aș porni de la un zid “gol” cu N
turnuri (gol înseamnă ca H[i] = 0
pentru orice 1 ≤ i ≤ N
) iar singura operație pe care o pot face este să aleg doi indici i
și j
cu 1 ≤ i ≤ j ≤ N
și să pun câte un cub peste fiecare turn în intervalul i
și j
, care este numărul minim de astfel de operații ce trebuie efectuate pentru a obține zidul inițial?
Cerința
Lui Alexandru i s-a părut banală problema așa că te provoacă și pe tine să o rezolvi.
Date de intrare
Fișierul de intrare mcub.in
conține pe prima linie numărul N
, iar pe a doua linie N
numere naturale ce reprezintă înălțimile fiecărui turn al zidului.
Date de ieșire
Fișierul de ieșire mcub.out
va conține pe prima linie numărul S
, reprezentând răspunsul întrebării puse de Alex.
Restricții și precizări
1 ≤ N ≤ 100.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât
1.000.000
Exemplu:
mcub.in
5 1 0 3 1 2
mcub.out
5
Încărcare soluție
Lipește codul aici
1
import sys
sys.stdin = open('mcub.in', 'r')
sys.stdout = open('mcub.out', 'w')
n = int(input())
hmax = 0
rez = 0
for i in range(1, n+1):
hmax = h
h = int(input())
if h > hmax:
rez += h - hmax
print(rez)