22 lines
644 B
Python
22 lines
644 B
Python
def parse(s: str) -> list[list[int]]:
|
|
return [[int(i) for i in l.split()]
|
|
for l in s.strip().splitlines()]
|
|
|
|
def solve(l: list[list[int]]) -> int:
|
|
cache = {}
|
|
n = len(l)
|
|
l = reversed(l)
|
|
for i, row in enumerate(l):
|
|
for j, val in enumerate(row):
|
|
if i == 0:
|
|
cache.update({(i, j): val})
|
|
else:
|
|
l = cache[(i-1, j)]
|
|
r = cache[(i-1, j+1)]
|
|
cache.update({(i, j): val+max(l, r)})
|
|
return cache[(n-1, 0)]
|
|
|
|
if __name__ == '__main__':
|
|
with open("input", "r") as f:
|
|
input = f.read()
|
|
print(solve(parse(input))) |