Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from collections import deque
- rows = int(input())
- cols = int(input())
- matrix = []
- dp = [[0] * cols for _ in range(rows)]
- for _ in range(rows):
- matrix.append([int(x) for x in input().split()])
- dp[0][0] = matrix[0][0]
- # filling in base row and base col in dp
- for col in range(1, cols):
- dp[0][col] = dp[0][col - 1] + matrix[0][col]
- for row in range(1, rows):
- dp[row][0] = dp[row - 1][0] + matrix[row][0]
- for row in range(1, rows):
- for col in range(1, cols):
- dp[row][col] = max(dp[row - 1][col], dp[row][col - 1]) + matrix[row][col]
- row = rows - 1
- col = cols - 1
- result = deque()
- result.appendleft([row, col])
- while row > 0 and col > 0:
- if dp[row - 1][col] > dp[row][col - 1]:
- row -= 1
- else:
- col -= 1
- result.appendleft([row, col])
- while row > 0:
- row -= 1
- result.appendleft([row, col])
- while col > 0:
- col -= 1
- result.appendleft([row, col])
- # result.appendleft([0, 0])
- print(*result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement