.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » gaz

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
gaz


Timp maxim de execuţie / test:
0.2s
Memorie totala disponibilă / stivă:
32MB / 1MB

O staţie de gaz are un rezervor subteran în care poate depozita cel mult L litri de gaz, dar există posibilitatea depozitării unei cantităţi suplimentare de gaz într-un rezervor închiriat de capacitate nelimitată pentru care se va plăti o taxă de C dolari pentru fiecare litru de gaz depozitat de la o zi la alta. Pentru a-şi servi clienţii, staţia se aprovizionează cu gaz cel mult o dată pe zi, dimineaţa. Preţul unui litru de gaz este de D dolari. Pentru fiecare aprovizionare trebuie plătită o taxă de P dolari în plus faţă de costul gazului comandat. În aceste condiţii, comandarea unei cantităţi mari de gaz poate creşte costul depozitării.
Staţia de gaz se închide după N zile. Aceasta livrează clienţilor săi Gi litri de gaz, din stocul său, la sfârşitul fiecărei zile i, unde i=1, 2, ... N. Problema constă în a alege cantităţile de gaz ce vor fi comandate zilnic, astfel încât la sfârşitul celei de a N-a zi întreaga cantitate de pe stoc să fie consumată şi costul total să fie minim. Se consideră că rezervorul este iniţial gol.

Cerinţă

Scrieţi un program care determină costul total minim pentru ca staţia să îşi servească clienţii în cele N zile şi întreaga cantitate de gaz să fie consumată la sfârşitul celei de a N-a zi.

Date de intrare

Prima linie a fişierului de intrare gaz.in conţine patru numere naturale separate prin câte un spaţiu, L P D C, cu semnificaţia din enunţ. A doua linie conţine numerele naturale N G1 G2 ... GN, separate prin câte un spaţiu, unde N reprezintă numărul zilelor după care staţia va fi închisă şi Gi cantitatea de gaz necesară zilei i, i=1, 2, ... N.

Date de ieşire

Fişierul de ieşire gaz.out va conţine o singură linie pe care se va scrie costul total minim cerut.

Restricţii

1 ≤ N ≤ 2 000
1 ≤ L, Gi ≤ 1 000, i=1, 2, ... N
1 ≤ P, D, C ≤ 5 000
• Pentru 80% din teste vom avea N ≤ 100.

Exemple

gaz.ingaz.outExplicaţii
5 3 1 1 5 3 2 4 5 1 22 O planificare optimă este cea descrisă în continuare.
În dimineaţa primei zile se comandă 5 litri de gaz şi se depozitează în rezervorul propriu. La sfârşitul zilei se livrează 3 litri. Costul primei zilei este 5+3=8. Pe timpul nopţii vor rămâne 2 litri în rezervorul propriu, fără costuri suplimentare.
În a doua zi staţia nu se aprovizionează, dar livrează 2 litri de gaz. Costul acestei zile este 0.
În dimineaţa celei de a treia zi se comandă 10 litri de gaz, depozitându-se câte 5 litri în fiecare din cele două rezervoare. Seara se livrează 4 litri din rezervorul închiriat. În rezervorul propriu rămân pe timpul nopţii 5 litri de gaz, iar în rezervorul închiriat încă un litru pentru care se va plăti un dolar. La costul total se va aduna 10+3+1=14 dolari.
În dimineaţa zilei a patra staţia nu se aprovizionează, dar seara livrează 5 litri de gaz, unul din rezervorul închiriat şi 4 din rezervorul propriu. În timpul nopţii nu vor fi costuri suplimentare de depozitare.
În ultima zi se va livra ultimul litru de gaz din rezervorul propriu.
Costul total este: 8+14=22.

autor: Marius Stroe
propunător: Prof. Emanuela Cerchez
Liceul de Informatică ″Grigore Moisil″
emanuela.cerchez@gmail.com
Probleme recomandate
De la ONI 2010: diff, kmax, minuni, stalpi1, submatrix1, dreptunghiuri, xp, petrecere, triunghi2, cmmmc, simetric1, cern, pesti, plaja, tango, arb1, v2d, xor2, cuiburi, telefon, teroristi
De acelaşi autor: arb1, ubuntzei, subsecvente, ausoara, bemo
Despre programare dinamică: vedete, fbr, tgv, zeratul, rv, comun, retea, circuit, sumdif, copaci, drum, text, palind, joc, vikingi, rafturi, balaur, plimbare, party, pc, pioni, seif, iepuri, numere3, perm, ture, bilete, prop, ro, reduceri, cuburi, invest, cutie2, stalpi, nr2, judete, strict, auto2, tree, jobs, leaves, pstring, program, datorii, senzori, farfurii, joc1, barbie, ambigram, rlcs, cub1, bio, chimie1, otilia, pasune, remi, sir23, tren1, joc5, pachete, echipe, comb, agitatie, ivv, peste, pitici, pipe, shgraf, tabara1, stop, randuri, zidar, log, sant, produs, subsir, cover, bcast, emax, dist, mesaj1, imax, avere, asmax, raft, suma2, joc12, fni, nr4, join, transport, masina3, lsort, microvirus, fat, cafea, echipe1, anticip, bsir, diamant, petrom, evantai, spion, acolor, evo, bombo, lacusta, lant, team, pitici1, numere8, dep, stiva, subgeom, pviz, tir1, cabane, piramida1, mosia, cuvinte1, gaina, materom, sortari, turnuri, trans, politie, codul, dansatori, nkbiti, kperms, treegame, siruri2, 123, jucarii, bradut, joc15, expozitie, text3, ic, echilibru, distsir, kmax, stalpi1, triunghi2, v2d, cuiburi, mine, orientare, activ, secvbiti, kcons, pokemon, ubergraf, left, acerc, autostrazi, kdist, select, cazare, fluviu, telecomanda, parcela, pion, subs, suma4, sirmax, bdotcom, viena, sablon2, telecab, ikebana, radare, hacker, obstacole, robotel, centrala, verigi, cds, wg, minusk, radioactiv, enigma, jb, efect, maxviz, ripstick, progresii, maxtri, combcuv, blis, subsiruri, mijloc, probleme, unuzero, palindrom1, minerale, speed, zmax, spider, cntgcd, interclasare, bus, pariuri, riglef, fractii2, fall, arbsum, conuri, arbvalmax, procente, metrou
surse trimise | ajutor