<p> K tomu, abychom za věci utratili co možná nejméně, potřebujeme do košíku postupně vybírat věci od té nejlevnější po tu nejdražší.</p> <p> Pole cen tedy vzestupně setřídíme a budeme jej postupně procházet, přičemž si budeme pamatovat součet cen věcí, které při průchodu potkáme. Jakmile při procházení přesáhne tento součet koruny vyhrazené na nákup, tak podle pozice v poli víme, kolik věcí si můžeme koupit.</p> <p> Jelikož se však zadání ptá na počet věcí, které si koupit nemůžeme, tak jako řešení vypíšeme počet věcí od pozice, kde jsme skončili s procházením, do konce pole cen.</p> <p> Řešení je jistě správné, určitě se totiž nemůže stát, že bychom si mohli koupit víc věcí, než nám vypíše algoritmus. Vyhodili jsme z košíku ty nejdražší věci, které jsme mohli, takže nám jich určitě nestačilo vyhodit méně.</p> <p> Rychlost řešení ovlivní hlavně to, jak rychle dokážeme ceny setřídit. Existují různé třídící algoritmy a pokud použijete nějaký algoritmus zabudovaný přímo v programovacím jazyce, běží většinou v čase <span class="math">O(n <span class="nomath">log</span> n)</span>. Pokud jste si implementovali vlastní jednoduché třídění, pravděpodobně bude mít časovou složitost <span class="math">O(n<sup>2</sup>)</span>. O třídících algoritmech si můžete přečíst v naší <a href="http://localhost/viz/kucharky/trideni">kuchařce o třídění</a>.</p> <p><a href="http://localhost/z/ulohy/32/32Z11.py">Program (Python 3)</a></p> <p><a href="http://localhost/z/ulohy/32/32Z11.cpp">Program (C++)</a></p> <p class="author"><a href="http://localhost/kontakty/organizatori/">Tom Sláma</a></p> <hr class="clearfloat">