5000 -> 0,
2000 -> 0,
1000 -> 1,
500 -> 100,
200 -> 4,
100 -> 0)
val need
= readLine.
toInt
def yoba
(n
: Int, cash
: List
[Int
]) = { def mali
_yoba
(n
: Int, a
: List
[Int
], v
: List
[Int
]): Stream
[List
[Int
]] = case 1 => mali
_yoba
(n - a.
head, a.
tail, v
:+ a.
head) #::: mali
_yoba
(n, a.
tail, v
) }
mali_yoba(n, cash, List())
}
val money
= (cash.
toList flatMap
{ case (v, c
) => List.
make(Math.
min(c, need/v
), v
) }) :+
0 sortWith
(_ > _) println(yoba(need, money).headOption.getOrElse(List()).mkString(" + "))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIHZhbCBjYXNoID0gTWFwKAogICAgNTAwMCAtPiAwLAogICAgMjAwMCAtPiAwLAogICAgMTAwMCAtPiAxLAogICAgIDUwMCAtPiAxMDAsCiAgICAgMjAwIC0+IDQsCiAgICAgMTAwIC0+IDApCiAgdmFsIG5lZWQgPSByZWFkTGluZS50b0ludAoKICBkZWYgeW9iYShuOiBJbnQsIGNhc2g6IExpc3RbSW50XSkgPSB7CiAgICBkZWYgbWFsaV95b2JhKG46IEludCwgYTogTGlzdFtJbnRdLCB2OiBMaXN0W0ludF0pOiBTdHJlYW1bTGlzdFtJbnRdXSA9CiAgICAgIGlmIChhLmlzRW1wdHkpIFN0cmVhbSgpCiAgICAgIGVsc2UgbiBjb21wYXJlIDAgbWF0Y2ggewogICAgICAgIGNhc2UgMCAgPT4gU3RyZWFtKHYpCiAgICAgICAgY2FzZSAtMSA9PiBTdHJlYW0oKQogICAgICAgIGNhc2UgMSAgPT4gbWFsaV95b2JhKG4gLSBhLmhlYWQsIGEudGFpbCwgdiA6KyBhLmhlYWQpICM6OjogbWFsaV95b2JhKG4sIGEudGFpbCwgdikKICAgICAgfQogICAgbWFsaV95b2JhKG4sIGNhc2gsIExpc3QoKSkKICB9CgogIHZhbCBtb25leSA9IChjYXNoLnRvTGlzdCBmbGF0TWFwIHsgY2FzZSAodiwgYykgPT4gTGlzdC5tYWtlKE1hdGgubWluKGMsIG5lZWQvdiksIHYpIH0pIDorIDAgc29ydFdpdGggKF8gPiBfKQogIHByaW50bG4oeW9iYShuZWVkLCBtb25leSkuaGVhZE9wdGlvbi5nZXRPckVsc2UoTGlzdCgpKS5ta1N0cmluZygiICsgIikpCn0=