编程题
### 问题描述 小齐到市场上购买农场的必需品。他口袋里有 $K$ 枚硬币($1 \leq K \leq 16$),每枚硬币的面值在 $1$ 到 $100,000,000$ 之间。小齐希望按顺序进行 $N$ 次购物($1 \leq N \leq 100,000$),第 $i$ 次购物需要支付 $c(i)$ 单位货币($1 \leq c(i) \leq 10,000$)。在进行这一系列购物时,他可以在某些时刻停下来,用一枚硬币支付自从上次停下来以来的所有购物费用(当然,他使用的单枚硬币必须足够支付这些费用)。不幸的是,市场上的供应商完全没有零钱,所以每当小齐使用的硬币大于他所欠的金额时,他就会失望地无法收到找零。 请计算小齐在进行 $N$ 次购物后最多可以剩余的金额。如果小齐无法完成所有购物,请输出 $-1$。 ### 输入格式 第 $1$ 行:两个整数 $K$ 和 $N$。 第 $2$ 行到第 $1+K$ 行:每行包含一枚小齐的硬币面值。 第 $2+K$ 行到第 $1+N+K$ 行:这 $N$ 行包含小齐打算购买的商品费用。 ### 输出格式 小齐最多可以剩余的金额,如果小齐无法完成所有购物,则输出 $-1$。 ### 样例输入 ``` 3 6 12 15 10 6 3 3 2 3 7 ``` ### 样例输出 ``` 12 ``` ### 评测数据规模 $1 \leq K, N \leq 100,000$,$1 \leq$ 小齐的硬币面值,购物费用 $\leq 100,000,000$。
查看答案
赣ICP备20007335号-2