Algorithm/ct/l2/18-指定值倍数取数.py

23 lines
504 B
Python

import io
import sys
sys.stdin = io.StringIO('''5 5
4 8 2 9 1''') # 20
n, k = map(int, input().split())
a = list(map(int, input().split()))
dp = [[-1] * k for i in range(n + 1)]
dp[0][0] = 0
for i in range(n + 1):
for j in range(k):
if dp[i - 1][j] != -1:
dp[i][j] = dp[i - 1][j]
tmp = (j - a[i - 1] % k + k) % k
if dp[i - 1][tmp] != -1:
dp[i][j] = max(dp[i][j], dp[i - 1][tmp] + a[i - 1])
if dp[n][0] == 0:
print(-1)
else:
print(dp[n][0])