V=int(input())
n=int(input())
a=[]
for _ in range(n):
a.append(int(input()))
# dp[j] 表示是否存在一个子集,使得体积和正好等于 s
dp=[False]*(V+1)
dp[0]=True
for w in a:#每考虑一个物体,dp[j]都会被更新
if w>V:
continue
for j in range(V,w-1,-1):#对于j<=w的dp[j]肯定不需要更新
if dp[j-w]: #j是V,V-1,...,w 这样递减的,最后一步必然是j-w=0
dp[j]=True
for k in range(V,-1,-1):
if dp[k]:
print(V-k)
break
降低空间复杂度:改用一维 dp, 让dp[j] 表示是否存在一个子集,使得体积和正好等于 s

京公网安备 11010502036488号