結果

問題 No.2889 Rusk
ユーザー 寝癖寝癖
提出日時 2024-09-13 23:13:20
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 925 ms / 2,000 ms
コード長 594 bytes
コンパイル時間 273 ms
コンパイル使用メモリ 81,848 KB
実行使用メモリ 259,012 KB
最終ジャッジ日時 2024-09-13 23:13:47
合計ジャッジ時間 25,693 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 52
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())
A = [list(map(int, input().split()))+[0] for _ in range(3)]

inf = float('inf')

# dp[i][j][k] := i個目まで決めて、直前の状態がj、移動回数がkのときの最大値
dp = [[[-inf]*5 for _ in range(3)] for _ in range(N+2)]
dp[0][0][0] = 0

for i in range(N+1):
    for j in range(3):
        for k in range(5):
            for nj in range(3):
                nk = k + abs(j-nj)
                if nk < 5:
                    dp[i+1][nj][nk] = max(dp[i+1][nj][nk], dp[i][j][k] + A[nj][i])

ans = 0
for k in range(5):
    ans = max(ans, dp[N+1][0][k])

print(ans)
0