python
def max_gold(n, workers, golds, needs):
dp = [[0] * (workers + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, workers + 1):
if j = needs[i 1]:
dp[i][j] = max(dp[i 1][j], dp[i 1][j needs[i 1]] + golds[i 1])
else:
dp[i][j] = dp[i 1][j]