买玩具
时间限制:1秒 内存限制:256M
【题目描述】
小H去玩具店购买玩具。他只有K枚硬币(1≤K≤20),每枚硬币的面值在1到109之间。小H想要按顺序完成N次购买(1≤N≤105),其中第i次购买花费ci单位金钱(1≤ ci≤105)。在连续进行购买时,他可以随时停下来,用一枚硬币一次性支付自上次付款以来所有购买的总费用,当然,他使用的这枚硬币必须足够支付所有这些费用。不幸的是,老板完全没有零钱,所以每当小H使用的硬币面值大于他应付的金额时,他不会收到老板找回的零钱!
请计算小H按顺序完成N次购买后,最终能剩下的最大金钱数额。如果小H无法完成N次购买,则输出他能购买的最大次数,即按顺序购买玩具的最大数量。
【输入格式】
第1行:两个整数K和N。
第2行至第1+K行:每行包含小H的一枚硬币的面值。
第2+K行至第1+N+K行:这N行包含小H 计划进行的每次购买的花费。
【输出格式】
输出一个整数,如果小H完成N次购买,则输出他剩下钱币的最大数量;否则输出其按顺序购买的最大次数。
【输入输出样例1】
Input
3 6
12
15
10
6
3
3
2
3
7
Output
12
【输入输出样例2】
Input
3 5
28
32
30
16
16
16
16
16
Output
4
【数据限制】
对于50%的数据,2≤K≤10。
对于100%的数据,10≤K≤20,2≤N≤105。
【来源】
Mr.he