結果
| 問題 |
No.2855 Move on Grid
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-08-25 14:16:34 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 713 ms / 3,000 ms |
| コード長 | 1,069 bytes |
| コンパイル時間 | 193 ms |
| コンパイル使用メモリ | 82,528 KB |
| 実行使用メモリ | 91,436 KB |
| 最終ジャッジ日時 | 2024-08-25 14:16:52 |
| 合計ジャッジ時間 | 16,956 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 40 |
ソースコード
from collections import deque
import sys
input = sys.stdin.readline
N, M, K = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(N)]
if N+M-1<=K:
print(10**9)
exit()
B = [[0 for _ in range(M)] for _ in range(N)]
l = 0
r = 10**9+1
while r-l>1:
mid = (l+r)//2
for i in range(N):
for j in range(M):
B[i][j] = 1 if A[i][j]<mid else 0
deq = deque()
deq.append((0, 0))
INF = 10**9
dist = [[INF for _ in range(M)] for _ in range(N)]
dist[0][0] = B[0][0]
dir = [(0, 1), (1, 0), (0, -1), (-1, 0)]
while deq:
i, j = deq.popleft()
for di, dj in dir:
ni = i+di
nj = j+dj
if 0<=ni<N and 0<=nj<M:
if dist[ni][nj]>dist[i][j]+B[ni][nj]:
dist[ni][nj] = dist[i][j]+B[ni][nj]
if B[ni][nj]==0:
deq.appendleft((ni, nj))
else:
deq.append((ni, nj))
if dist[N-1][M-1]<=K:
l = mid
else:
r = mid
print(l)