Feladat: S.96 Korcsoport: - Nehézségi fok: -
Füzet: 2015/február, 102. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Egy D (1D1015) hosszú rudat szeretnénk szétvágni N (1N500000) db kisebb rúdra. Tudjuk a kisebb rudak hosszát: az i-edik hossza ri (1ri1015) és azt is tudjuk, hogy a kisebb rudak összhossza D. Egy L hosszú rúd szétvágása tetszőleges hosszúságú két részre L forint. Egy vágással egyszerre csak egy rudat szabad kettévágni. Daraboljuk föl a lehető legolcsóbban a teljes D hosszú rudat a megadott ri hosszú részekre.
A program olvassa be a standard input első sorából N-et és D-t, majd a következő N sorból az ri szóközzel elválasztott egészeket, majd írja a standard output első sorába a minimális pénzt, amennyivel megoldható a szétdarabolás.

 
Példa bemenet (a második sortól egy sorban):  Példa kimenet:  4 9   18   2 1 3 3   
 

Pontozás és korlátok: A programhoz mellékelt, a helyes megoldás elvét tömören, de érthetően leíró dokumentáció 1 pontot ér. A programra akkor kapható meg a további 9 pont, ha bármilyen hibátlan bemenetet képes megoldani az 1 mp futásidőkorláton belül.
Beküldendő egy tömörített s96.zip állományban a program forráskódja (s96.pas, s96.cpp, ...) az .exe és más, a fordító által generált állományok nélkül, valamint a program rövid dokumentációja (s96.txt, s96.pdf, ...), amely a fentieken túl megadja, hogy a forrás mely fejlesztői környezetben fordítható.