Cod sursa(job #2850315)

Utilizator RoberttoPopescu Paullo Robertto Karloss Robertto Data 16 februarie 2022 16:50:12
Problema Problema rucsacului Scor 0
Compilator py Status done
Runda Arhiva educationala Marime 0.9 kb
fin = open("rucasc.in", "r")

first_line = fin.readline().split()

N = int(first_line[0])
W = int(first_line[1])

weights = [0]
costs = [0]

for i in range(N):
    current_line = fin.readline().split()
    current_weight = int(current_line[0])
    current_cost = int(current_line[1])
    weights.append(current_weight)
    costs.append(current_cost)

n = len(weights) - 1  # n = numarul de obiecte

# initializam toate elementele matricei cmax cu 0
cmax = [[0 for x in range(W + 1)] for x in range(n + 1)]

# calculam elementele matricei cmax folosind relatia de recurenta
for i in range(1, n + 1):
    for j in range(1, W + 1):
        cmax[i][j] = cmax[i - 1][j]
        if weights[i] <= j and costs[i] + cmax[i - 1][j - weights[i]] > cmax[i - 1][j]:
            cmax[i][j] = costs[i] + cmax[i - 1][j - weights[i]]

fout = open("rucsac.out", "w")
fout.write(str(cmax[n][W]))
fout.close()