結果
問題 |
No.2639 Longest Increasing Walk
|
ユーザー |
![]() |
提出日時 | 2024-02-19 18:24:34 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,687 ms / 2,000 ms |
コード長 | 542 bytes |
コンパイル時間 | 264 ms |
コンパイル使用メモリ | 82,172 KB |
実行使用メモリ | 333,208 KB |
最終ジャッジ日時 | 2024-09-29 01:13:04 |
合計ジャッジ時間 | 6,412 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 33 |
ソースコード
import sys sys.setrecursionlimit(998244) h,w = map(int,input().split()) a = [list(map(int,input().split())) for i in range(h)] dp = [[0]*w for i in range(h)] seen = [[0]*w for i in range(h)] def dfs(i, j): if seen[i][j]: return dp[i][j] ret = 1 for x, y in [(i+1, j), (i-1, j), (i, j+1), (i, j-1)]: if 0 <= x < h and 0 <= y < w and a[x][y] > a[i][j]: ret = max(ret, dfs(x, y) + 1) dp[i][j] = ret seen[i][j] = 1 return ret ans = 0 for i in range(h-1,-1,-1): for j in range(w-1,-1,-1): ans = max(ans, dfs(i, j)) print(ans)