結果

問題 No.2982 Logic Battle
ユーザー rin204
提出日時 2024-12-07 00:23:56
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 988 ms / 2,000 ms
コード長 695 bytes
コンパイル時間 367 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 82,688 KB
最終ジャッジ日時 2024-12-07 00:24:17
合計ジャッジ時間 20,900 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 38
権限があれば一括ダウンロードができます

ソースコード

diff #

n = int(input())
inf = 1 << 60
dp1 = [-inf] * n
dp2 = [-inf] * n
dp3 = [-inf] * n
dp1[0] = 0
dp2[0] = 0
dp3[0] = 0

for t in range(n):
    ndp1 = [-inf] * n
    ndp2 = [-inf] * n
    ndp3 = [-inf] * n

    A = list(map(int, input().split()))
    for a in A:
        for j in range(n):
            nj = j + a
            v = max(dp2[j], dp3[j])
            if nj > n:
                v += (n - t) * (nj - n)
                nj = n

            v += nj
            nj = max(nj - 1, 0)

            ndp1[nj] = max(ndp1[nj], v)

        dp1, dp2, dp3 = dp2, dp3, dp1
        ndp1, ndp2, ndp3 = ndp2, ndp3, ndp1

    dp1 = ndp1
    dp2 = ndp2
    dp3 = ndp3

print(max(max(dp1), max(dp2), max(dp3)))
0