結果

問題 No.844 split game
ユーザー mkawa2
提出日時 2019-07-11 08:43:25
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 642 bytes
コンパイル時間 414 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 37,108 KB
最終ジャッジ日時 2024-11-07 04:45:01
合計ジャッジ時間 22,333 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 33 WA * 23
権限があれば一括ダウンロードができます

ソースコード

diff #

from operator import itemgetter

def update(i, x):
    while i < n + 1:
        if x > bit[i]:
            bit[i] = x
        i += i & -i

def get(i):
    mx = 0
    while i > 0:
        if mx < bit[i]:
            mx = bit[i]
        i -= i & -i
    return mx

n, m, a = map(int, input().split())
ku = [list(map(int, input().split())) for _ in range(m)]
ku.sort(key=itemgetter(1))
bit = [0] * (n + 1)
dp = [-a] * (n + 1)
for l, r, p in ku:
    if l - 1:
        dp[r] = max(dp[l - 1] + p - a, get(l - 1) - 2 * a, dp[r])
        update(r, dp[r])
    else:
        dp[r] = max(p - a, dp[r])
        update(r, dp[r])
dp[-1] += a
print(max(dp))
0