結果

問題 No.844 split game
ユーザー tpynerivertpyneriver
提出日時 2019-06-28 21:38:48
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 323 ms / 2,000 ms
コード長 1,552 bytes
コンパイル時間 1,396 ms
コンパイル使用メモリ 86,796 KB
実行使用メモリ 103,128 KB
最終ジャッジ日時 2023-09-14 21:43:30
合計ジャッジ時間 12,640 ms
ジャッジサーバーID
(参考情報)
judge13 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 211 ms
88,448 KB
testcase_01 AC 216 ms
90,260 KB
testcase_02 AC 275 ms
96,316 KB
testcase_03 AC 241 ms
95,004 KB
testcase_04 AC 206 ms
87,408 KB
testcase_05 AC 298 ms
100,100 KB
testcase_06 AC 200 ms
85,904 KB
testcase_07 AC 205 ms
88,056 KB
testcase_08 AC 169 ms
82,588 KB
testcase_09 AC 207 ms
90,304 KB
testcase_10 AC 297 ms
99,000 KB
testcase_11 AC 323 ms
101,328 KB
testcase_12 AC 196 ms
90,312 KB
testcase_13 AC 177 ms
85,996 KB
testcase_14 AC 232 ms
89,640 KB
testcase_15 AC 305 ms
103,128 KB
testcase_16 AC 302 ms
102,852 KB
testcase_17 AC 320 ms
102,792 KB
testcase_18 AC 303 ms
102,312 KB
testcase_19 AC 313 ms
102,488 KB
testcase_20 AC 307 ms
102,740 KB
testcase_21 AC 302 ms
102,724 KB
testcase_22 AC 307 ms
102,816 KB
testcase_23 AC 143 ms
79,212 KB
testcase_24 AC 147 ms
80,060 KB
testcase_25 AC 115 ms
78,544 KB
testcase_26 AC 127 ms
78,748 KB
testcase_27 AC 121 ms
78,896 KB
testcase_28 AC 122 ms
78,800 KB
testcase_29 AC 142 ms
79,932 KB
testcase_30 AC 158 ms
80,812 KB
testcase_31 AC 129 ms
78,888 KB
testcase_32 AC 125 ms
78,544 KB
testcase_33 AC 99 ms
78,424 KB
testcase_34 AC 96 ms
78,456 KB
testcase_35 AC 102 ms
78,408 KB
testcase_36 AC 98 ms
78,312 KB
testcase_37 AC 108 ms
78,524 KB
testcase_38 AC 160 ms
84,692 KB
testcase_39 AC 211 ms
92,460 KB
testcase_40 AC 182 ms
85,724 KB
testcase_41 AC 76 ms
71,400 KB
testcase_42 AC 76 ms
71,164 KB
testcase_43 AC 76 ms
71,392 KB
testcase_44 AC 75 ms
71,280 KB
testcase_45 AC 76 ms
71,132 KB
testcase_46 AC 74 ms
71,132 KB
testcase_47 AC 76 ms
71,536 KB
testcase_48 AC 76 ms
71,392 KB
testcase_49 AC 74 ms
71,164 KB
testcase_50 AC 76 ms
71,472 KB
testcase_51 AC 75 ms
71,540 KB
testcase_52 AC 75 ms
71,244 KB
testcase_53 AC 75 ms
71,248 KB
testcase_54 AC 76 ms
71,352 KB
testcase_55 AC 76 ms
71,348 KB
testcase_56 AC 77 ms
71,356 KB
testcase_57 AC 75 ms
71,044 KB
testcase_58 AC 77 ms
71,304 KB
testcase_59 AC 75 ms
71,196 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from operator import itemgetter
import sys
class Segtree:
    def __init__(self, A, intv, initialize = True, segf = min):
        self.N = len(A)
        self.N0 = 2**(self.N-1).bit_length()
        self.intv = intv
        self.segf = segf
        if initialize:
            self.data = [intv]*(self.N0-1) + A + [intv]*(self.N0 - self.N + 1)
            for i in range(self.N0-2, -1, -1):
                self.data[i] = self.segf(self.data[2*i+1], self.data[2*i+2]) 
        else:
            self.data = [intv]*(2*self.N0)
        
    def update(self, k, x):
        k += self.N0-1
        self.data[k] = x
        while k >= 0 :
            k = (k-1)//2
            self.data[k] = self.segf(self.data[2*k+1], self.data[2*k+2])
    
    def query(self, l, r):
        L, R = l+self.N0, r+self.N0
        s = self.intv
        while L < R:
            if R & 1:
                R -= 1
                s = self.segf(s, self.data[R-1])
            if L & 1:
                s = self.segf(s, self.data[L-1])
                L += 1
            L >>= 1
            R >>= 1
        return s

            

N, M, A = map(int, input().split())
LRP = [tuple(map(int, sys.stdin.readline().split())) for _ in range(M)]

Edge = [[] for _ in range(N+1)]
for l, r, p in LRP:
    Edge[r].append((l, p))

Dp = [0]*(N+1)
dp = Segtree([0]*(N+1), 0, False, max)

for i in range(1, N+1):
    res = -A
    res = max(dp.query(0, i) - A, res)
    for l, c in Edge[i]:
        res = max(res, Dp[l-1] + c - A)
    Dp[i] = res
    dp.update(i, res)
Dp[-1] += A
print(max(Dp))
0