Pagini recente » Cod sursa (job #1540738) | Cod sursa (job #896316) | Cod sursa (job #2894963) | Cod sursa (job #1455376) | Cod sursa (job #2449698)
#!/usr/bin/env python3
import sys
sys.stdout = open('rucsac.out', 'w')
with open('rucsac.in' , 'r') as f:
pair = lambda: tuple(map(int, f.readline().split()))
N, G = pair()
DP, MAX, BEST = [-1] * (G + 1), 0, 0
DP[0] = 0
for g, p in (pair() for _ in range(N)):
for gg in reversed(range(MAX + 1)):
if gg + g <= G and DP[gg] >= 0:
MAX = max(MAX, gg + g)
DP[gg + g] = DP[gg] + p
BEST = max(BEST, DP[gg + g])
print(BEST)