Submission #3980840


Source Code Expand

import sys
readline = sys.stdin.readline

N, M = map(int, readline().split())
L = [[] for i in range(N+1)]
R = [[] for i in range(N+1)]
for i in range(M):
    l, r, a = map(int, readline().split())
    L[l-1].append((r, a))

INF = 2**31-1

LV = (N).bit_length()
N0 = 2**LV
data = [0]*(2*N0)
lazy = [0]*(2*N0)

I = []; K = []
for x in range(N0+1):
    y = N0 + x
    z = (y // (y & -y)) >> 1
    K.append(z)
    r = []
    while z:
        r.append(z)
        z >>= 1
    r.reverse()
    I.append(r)
I.append([])

J = []
for x in range(N0+1):
    y = N0 + x + 1
    z = (y // (y & -y)) - 1
    J.append(z-1 if z else 0)

def propagates(ids):
    for i in ids:
        v = lazy[i-1]
        if not v:
            continue
        lazy[2*i-1] += v; lazy[2*i] += v
        data[2*i-1] += v; data[2*i] += v
        lazy[i-1] = 0

# update [0, r)
def update(r, x):
    #propagates(I[r])

    i = r
    while i:
        v = J[i-1]
        lazy[v] += x; data[v] += x
        i -= (i & -i)

    k = K[r]
    while k:
        data[k-1] = max(data[2*k-1], data[2*k]) + lazy[k-1]
        k >>= 1

# update[k, k+1)
def update1(k, x):
    #propagates(I[k])
    k += N0
    data[k-1] += x
    while k:
        k >>= 1
        data[k-1] = max(data[2*k-1], data[2*k]) + lazy[k-1]


# query [0, r)
def query(r):
    return max(map(data.__getitem__, qquery(r)))

def qquery(r):
    propagates(I[r])

    while r:
        yield J[r-1]
        r -= (r & -r)

# query [k, k+1)
def query1(k, x):
    propagates(I[k])
    return data[k + N0 - 1]


for i in range(N):
    for r, a in L[i]:
        update(i+1, a)
        R[r].append((i, a))
    for l, a in R[i]:
        update(l+1, -a)
    v = query(i+1)
    update1(i+1, v)
for l, a in R[N]:
    update(l+1, -a)
sys.stdout.write("%d\n" % query(N+1))

Submission Info

Submission Time
Task W - Intervals
User yaketake08
Language PyPy3 (2.4.0)
Score 100
Code Size 1873 Byte
Status AC
Exec Time 1807 ms
Memory 162680 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 21
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 0_04, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15
Case Name Status Exec Time Memory
0_00 AC 172 ms 38256 KiB
0_01 AC 173 ms 38256 KiB
0_02 AC 173 ms 38256 KiB
0_03 AC 173 ms 38256 KiB
0_04 AC 172 ms 38256 KiB
1_00 AC 472 ms 74588 KiB
1_01 AC 456 ms 74460 KiB
1_02 AC 1035 ms 143944 KiB
1_03 AC 985 ms 143432 KiB
1_04 AC 1130 ms 162680 KiB
1_05 AC 1168 ms 162680 KiB
1_06 AC 1143 ms 162680 KiB
1_07 AC 1113 ms 162680 KiB
1_08 AC 1807 ms 161420 KiB
1_09 AC 1774 ms 161132 KiB
1_10 AC 1743 ms 161852 KiB
1_11 AC 1736 ms 162096 KiB
1_12 AC 1749 ms 160848 KiB
1_13 AC 1724 ms 160688 KiB
1_14 AC 1726 ms 161348 KiB
1_15 AC 1626 ms 161456 KiB