結果
問題 |
No.2095 High Rise
|
ユーザー |
![]() |
提出日時 | 2022-10-09 01:21:37 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 181 ms / 2,000 ms |
コード長 | 761 bytes |
コンパイル時間 | 348 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 85,868 KB |
最終ジャッジ日時 | 2024-06-23 02:37:40 |
合計ジャッジ時間 | 4,387 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
N, M = map(int, input().split()) if N == 1: print(0) exit() A = [list(map(int, input().split())) for _ in range(N)] dp = [0] * M minc = 10 ** 13 for j in range(M): dp[j] = A[0][j] + A[1][j] if minc > dp[j]: minc = min(minc, dp[j]) minm = {j} elif minc == dp[j]: minm.add(j) for i in range(2, N): minc2 = 10 ** 13 minm2 = {} dp2 = [0] * M for j in range(M): if j in minm: tmp = dp[j] + A[i][j] else: tmp = min(minc + A[i - 1][j] + A[i][j], dp[j] + A[i][j]) if minc2 > tmp: minc2 = tmp minm2 = {j} elif minc == dp[j]: minm2.add(j) dp2[j] = tmp minc = minc2 minm = minm2 dp = dp2 print(minc)