結果
| 問題 | No.2639 Longest Increasing Walk |
| コンテスト | |
| ユーザー |
norioc
|
| 提出日時 | 2026-05-25 08:35:12 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 284 ms / 2,000 ms |
| コード長 | 757 bytes |
| 記録 | |
| コンパイル時間 | 204 ms |
| コンパイル使用メモリ | 85,632 KB |
| 実行使用メモリ | 125,060 KB |
| 最終ジャッジ日時 | 2026-05-25 08:35:28 |
| 合計ジャッジ時間 | 5,963 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge2_0 |
| 純コード判定待ち |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 |
ソースコード
def neighbors4(r: int, c: int) -> list[tuple[int, int]]:
res = []
for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
nr = r + dr
nc = c + dc
if not (0 <= nr < H and 0 <= nc < W): continue
res.append((nr, nc))
return res
H, W = map(int, input().split())
A = []
for _ in range(H):
A.append(list(map(int, input().split())))
xs = []
for i in range(H):
for j in range(W):
xs.append((A[i][j], i, j))
dp = [[1] * W for _ in range(H)]
for _, r, c in sorted(xs, key=lambda x: x[0]):
for nr, nc in neighbors4(r, c):
if A[nr][nc] > A[r][c]:
dp[nr][nc] = max(dp[nr][nc], dp[r][c] + 1)
ans = 0
for i in range(H):
for j in range(W):
ans = max(ans, dp[i][j])
print(ans)
norioc