結果

問題 No.3683 サーバー代がもったいない!
コンテスト
ユーザー kmmtkm
提出日時 2026-09-05 13:26:38
言語 PyPy3
(7.3.23)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 321 ms / 2,000 ms
+ 978µs
コード長 842 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 235 ms
コンパイル使用メモリ 95,948 KB
実行使用メモリ 100,304 KB
最終ジャッジ日時 2026-09-05 13:26:58
合計ジャッジ時間 9,027 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def main():
    n, k = map(int, input().split())
    a = list(map(int, input().split()))

    # dp[i][j][flg] = 前からi個見て、j個削除していて、i個目を削除した
    inf = float("inf")
    # dp = [[[-inf] * 2 for _ in range(k + 1)] for _ in range(n + 1)]
    dp = [[-inf] * 2 for _ in range(k + 1)]
    dp[0][0] = 0
    for i in range(n):
        ep = [[-inf] * 2 for _ in range(k + 1)]
        for j in range(k + 1):
            # 削除しないとき
            ep[j][0] = max(ep[j][0], dp[j][0], dp[j][1])

            # 削除するとき
            if j < k:
                ep[j + 1][1] = max(ep[j + 1][1], dp[j][0] + a[i])

        dp, ep = ep, dp

    ans = max(dp[k][flg] for flg in range(2))
    if ans == -inf:
        print("Impossible")
    else:
        print(ans)


if __name__ == "__main__":
    main()
0