graphlogo

Wydział Matematyki i Informatyki

Uniwersytetu Mikołaja Kopernika w Toruniu

2inf 2023/24 Algorytmy i struktury danych - LE, LF

[bd*] Bankomat dynamiczny (*)
Data zakończenia: 2023-12-31 23:59
Języki: pas c cpp
Limit czasu: 5.0 s
Limit pamięci: 10 MB
Limit rozmiaru rozwiązania: 20 kB
Zadanie dodatkowe


Problem
Znalezienie minimalnej liczby banknotów/monet (z ustalonej puli nominałów) potrzebnych do wypłacenia danej kwoty. Użyj programowania dynamicznego. Zakładamy, że liczba banknotów/monet o ustalonych nominałach jest nieograniczona.

Wejście
W pierwszej linii liczba naturalna 0 < k = kwota do wypłacenia.
W drugiej linii liczba naturalna 1 <= n <= 1000, w trzeciej linii n oddzielonych spacjami liczb naturalnych 0 < A[1],...,A[n] = ustalone nominały.

Wyjście - dwie możliwości
(1) Gdy rozwiązanie nie istnieje, na wyjściu powinien się pojawić jedynie napis 'NIE'.

(2) W przeciwnym wypadku: liczba naturalna t = minimalna liczba banknotów/monet potrzebnych do wypłacenia kwoty k;
w drugiej linii, oddzielone spacjami liczby S[1],...,S[t] = nominały użyte do wypłacenia kwoty k (tj. S[1]+...+S[t]=k). Wartości S[1],...,S[t] posortowane nierosnąco.




Przykładowe wejście I
23
3
2 1 5


Wynik I
6
5 5 5 5 2 1



Przykładowe wejście II
5
2
2 4


Wynik II
NIE


Powrót
© 2009-2020 • ZawodyWeb Team
IKS - Inwestycja w Kierunki Strategiczne na Wydziale Matematyki i Informatyki UMK

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego