def max_requests(total_bandwidth, bandwidth, request):
dp = {}
def dfs(i, remaining_bandwidth):
if i == len(bandwidth):
return 0
if i in dp:
return dp[(i, remaining_bandwidth)]
if bandwidth[i] > remaining_bandwidth:
dp[(i, remaining_bandwidth)] = dfs(i+1, remaining_bandwidth)
return dp[(i, remaining_bandwidth)]
else:
dp[(i, remaining_bandwidth)] = max(dfs(i +1 , remaining_bandwidth), dfs(i +1 , remaining_bandwidth-bandwidth[i])+request[i])
return dp[(i, remaining_bandwidth)]
return dfs(0, total_bandwidth)