2033 - MCub: Difference between revisions

From Bitnami MediaWiki
Raul (talk | contribs)
Pagină nouă: Alexandru este foarte pasionat de cuburi. Într-o zi, acesta a creat un zid format din <code>N</code> turnuri de cuburi, turnul <code>i</code> fiind alcătuit din <code>H[i]</code> cuburi puse unul peste altul. Având acest zid, el își pune următoarea întrebare: Dacă aș porni de la un zid “gol” cu <code>N</code> turnuri (gol înseamnă ca <code>H[i] = 0</code> pentru orice <code>1 ≤ i ≤ N</code>) iar singura operație pe care o pot face este să aleg doi indici...
 
Raul (talk | contribs)
No edit summary
 
Line 25: Line 25:


=== Lipește codul aici ===
=== Lipește codul aici ===
1
<syntaxhighlight lang="python">
​import sys
​import sys


sys.stdin = open('mcub.in', 'r')
sys.stdintxt = open('mcubin.txt', 'r')


sys.stdout = open('mcub.out', 'w')
sys.stdouttxt = open('mcubout.txt', 'w')


n = int(input())
n = int(input())


hmax = 0
hmax = 0


rez = 0
rez = 0


for i in range(1, n+1):
for i in range(1, n+1):


    hmax = h
    hmax = h


    h = int(input())
    h = int(input())


    if h > hmax:
    if h > hmax:


        rez += h - hmax
        rez += h - hmax


print(rez)
print(rez)
 
</syntaxhighlight>

Latest revision as of 14:15, 14 December 2023

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[edit | edit source]

Lui Alexandru i s-a părut banală problema așa că te provoacă și pe tine să o rezolvi.

Date de intrare[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 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:[edit | edit source]

mcub.in

5
1 0 3 1 2

mcub.out

5

Încărcare soluție[edit | edit source]

Lipește codul aici[edit | edit source]

<syntaxhighlight lang="python"> ​import sys

sys.stdintxt = open('mcubin.txt', 'r')

sys.stdouttxt = open('mcubout.txt', '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)

</syntaxhighlight>