結果
| 問題 | No.777 再帰的ケーキ | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2020-12-03 11:23:58 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1,086 ms / 2,000 ms | 
| コード長 | 940 bytes | 
| コンパイル時間 | 308 ms | 
| コンパイル使用メモリ | 82,132 KB | 
| 実行使用メモリ | 186,228 KB | 
| 最終ジャッジ日時 | 2024-09-13 19:23:27 | 
| 合計ジャッジ時間 | 10,765 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 33 | 
ソースコード
import sys
input = sys.stdin.readline
from collections import defaultdict
 
def compress(l):
    l = list(set(l))
    l.sort()
    idx = defaultdict(int)
    for i in range(len(l)):
        idx[l[i]] = i
    
    return idx
class BIT:
    def __init__(self, n):
        self.n = n
        self.bit = [0]*(n+1)
    
    def update(self, i, x):
        i += 1
        
        while i<=self.n:
            self.bit[i] = max(self.bit[i], x)
            i += i&(-i)
    def acc(self, i):
        s = 0
        
        while i>0:
            s = max(s, self.bit[i])
            i -= i&(-i)
        
        return s
N = int(input())
ABC = [tuple(map(int, input().split())) for _ in range(N)]
ABC.sort(key=lambda t: (t[0], -t[1]))
B = [Bi for _, Bi, _ in ABC]
C = [Ci for _, _, Ci in ABC]
idx = compress(B)
bit = BIT(len(idx.keys()))
for Bi, Ci in zip(B, C):
    i = idx[Bi]
    bit.update(i, bit.acc(i)+Ci)
print(bit.acc(len(idx.keys())))
            
            
            
        