Solution (Raw Text)

from sys import stdin, setrecursionlimit
setrecursionlimit(1000000000)
#input = stdin.readline

n = int(input())
grid = [list(map(int, input().split())) for _ in range(n)]
dis = [[-1] * (n + 1) for _ in range(n + 1)]

def dfs(i, j):
    if dis[i][j] != -1: return dis[i][j]
    
    dis[i][j] = 0
    if i < n - 1 and grid[i + 1][j] < grid[i][j]:
        dis[i][j] = dfs(i + 1, j) + 1
    if i > 0 and grid[i - 1][j] < grid[i][j]:
        dis[i][j] = max(dis[i][j], dfs(i - 1, j) + 1)
    if j < n - 1 and grid[i][j + 1] < grid[i][j]:
        dis[i][j] = max(dis[i][j], dfs(i, j + 1) + 1)
    if j > 0 and grid[i][j - 1] < grid[i][j]:
        dis[i][j] = max(dis[i][j], dfs(i, j - 1) + 1)
    
    return dis[i][j]

best = -1
for i in range(n):
    for j in range(n):
        best = max(best, dfs(i, j))
print(best)

Problem Statement

The document could not be loaded, sorry for the inconvenience.