Ciprian stătea pe treapta din fața școlii, cu caietul deschis şi cu pixul pregătit să noteze idei. Zilele trecute intraseră într-o competiție de informatică regională, iar tema lui de suflet era optimizarea: găsirea celei mai bune soluții pentru probleme aparent simple, dar cu mii de erori ascunse.
Într-o seară, la laboratorul de informatică, profesorul de informatică, Marian, a desenat pe tablă două șiruri de numere: înălțimile clădirilor de pe bulevard, , și profiturile, . „Imaginați-vă că vreți să alegeți un segment continuu de clădiri pe care să îl închiriați pentru un festival stradal.” explică el. „Însă contractul cere ca toate clădirile să aibă cel puțin înălțimea , iar profitul vostru să fie cât mai mare posibil.”
Ciprian a început imediat să-și imagineze cartierul: clădiri vechi cu fațade colorate, unele zgârie-nori eleganți, altele case modeste cu un etaj. Fiecare clădire era caracterizată de două valori: înălțimea și profitul zilnic. Pentru fiecare prag dat de organizatorii festivalului, el trebuia să răspundă rapid care e suma maximă a profiturilor pe care o putea obține selectând un interval de clădiri cu toate înălțimile mai mari sau egale cu .
Cerință
Fiind date , , și pentru , răspunde la întrebări de următorul fel: fie pragul , găsește cea mai mare sumă a costurilor unui segment continuu de clădiri , astfel încât toate clădirile din acel segment să aibă înălțimea cel puțin .
Date de intrare
Fișierul de intrare cladiri.in
conține:
- pe prima linie două numere naturale, și , cu semnificația din enunț;
- pe următoarea linie numere naturale, al -lea număr corespunde lui ;
- pe următoarea linie numere naturale, al -lea număr corespunde lui ;
- pe următoarele linii, numere naturale, câte unul pe fiecare linie, care corespunde -ului din cerință.
Date de ieșire
Pentru fiecare , afișează în cladiri.out
pe câte o linie un număr: costul maxim al unui segment de clădiri , cu toate înălțimile mai mari sau egale cu , sau dacă nu există niciun segment valid.
Restricții și precizări
- ;
- ;
- ;
- ;
# | Punctaj | Restricții |
---|---|---|
1 | 20 | |
2 | 30 | |
3 | 50 | Fără restricții suplimentare |
Exemplu
cladiri.in
8 5
2 1 4 3 5 2 6 4
3 2 1 4 5 1 2 3
1
3
4
5
7
cladiri.out
21
10
5
5
0
Explicație
Pentru prima întrebare, , orice clădire convine. Costul maxim este .
Pentru a doua întrebare, , pozițiile eligibile sunt . Segmente valide: , cu suma 3, , cu suma 10, , cu suma 5. Suma maximă este 10, pe segmentul .
Pentru a patra întrebare, , pozițiile eligibile sunt . Segmente valide: , cu suma 5, , cu suma 2. Suma maximă este 5, pe segmentul .
Pentru a cincea întrebare, , nu există clădiri care să aibe înălțimea mai mare sau egală cu 7. Vom afișa 0.