結果

問題 No.777 再帰的ケーキ
コンテスト
ユーザー titia
提出日時 2026-08-04 04:17:15
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,354 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,517 ms
コンパイル使用メモリ 95,596 KB
実行使用メモリ 276,608 KB
最終ジャッジ日時 2026-08-04 04:17:27
合計ジャッジ時間 9,256 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 27 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys
input = sys.stdin.readline

N=int(input())

A=[list(map(int,input().split())) for i in range(N)]

S=set()

for a,b,c in A:
    S.add(a)
    S.add(b)

S=sorted(set(S))
D={S[i]:i for i in range(len(S))}

for i in range(N):
    A[i][0]=D[A[i][0]]
    A[i][1]=D[A[i][1]]

LIST=[[] for i in range(N*2)]

for a,b,c in A:
    LIST[a].append((b,c))

def seg_function(x,y): # Segment treeで扱うfunction
    return max(x,y)

seg_el=1<<((2*N).bit_length()) # Segment treeの台の要素数
SEG=[0]*(2*seg_el) # 1-indexedなので、要素数2*seg_el.Segment treeの初期値で初期化

def update(n,x,seg_el): # A[n]をxへ更新
    i=n+seg_el
    SEG[i]=x
    i>>=1 # 子ノードへ
    
    while i!=0:
        SEG[i]=seg_function(SEG[i*2],SEG[i*2+1])
        i>>=1
        
def getvalues(l,r): # 区間[l,r)に関するseg_functionを調べる
    L=l+seg_el
    R=r+seg_el
    ANS1=0
    ANS2=0

    while L<R:
        if L & 1:
            ANS1=seg_function(ANS1, SEG[L])
            L+=1

        if R & 1:
            R-=1
            ANS2=seg_function(SEG[R], ANS2)
        L>>=1
        R>>=1

    return seg_function(ANS1, ANS2)

for i in range(N*2-1,-1,-1):
    ANS=[]

    for a,b in LIST[i]:
        k=getvalues(a+1,N*2)
        ANS.append((a,k+b))

    for a,b in ANS:
        update(a,b,seg_el)

LANS=getvalues(0,2*N)

print(LANS)

0