Submission #69863312


Source Code Expand

from atcoder.lazysegtree import LazySegTree
from atcoder.fenwicktree import FenwickTree

N = int(input())
A = list(map(int, input().split()))
Q = int(input())
queries = []
for _ in range(Q):
    l, r, k = map(int, input().split())
    l -= 1
    queries.append((l, r, k))

INF = 1 << 60
e = (INF, -1)  # 値、位置


def op(l, r):
    lv, li = l
    rv, ri = r
    if lv < rv:
        return lv, li
    else:
        return rv, ri


def mapping(f, x):
    return x[0] + f, x[1]


def composition(f, g):
    return f + g


lst = LazySegTree(op, e, mapping, composition, 0, [(a, i) for i, a in enumerate(A)])

event = [[] for _ in range(Q)]

for q, (l, r, k) in enumerate(queries):
    lst.apply(l, r, -k)
    while True:
        v, i = lst.prod(l, r)
        if v <= 0:
            event[q].append((i, v))
            lst.apply(i, i + 1, INF)
        else:
            break

ft = FenwickTree(N)
for i in range(N):
    ft.add(i, 1)

for q, (l, r, k) in enumerate(queries):
    ans = k * ft.sum(l, r)
    for i, v in event[q]:
        ans += v
        ft.add(i, -1)
    print(ans)


"""
遅延セグ木にはしったがもうちょい詰める必要がある

0になったものは忘れてよさそう

ある区間での条件を満たす要素が欲しい

なくなったタイミングをとれる?
区間更新・最小値の木 → 最小値が0以下になったらそのIDを取りつつ、タイミングと不足分を記録

fenneck木であとはとれる個数を管理 不足したときはカウントを減らす

"""

Submission Info

Submission Time
Task F - Clearance
User mo12412
Language Python (PyPy 3.10-v7.3.12)
Score 525
Code Size 1619 Byte
Status AC
Exec Time 3210 ms
Memory 319080 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 1
AC × 38
Set Name Test Cases
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt
Case Name Status Exec Time Memory
sample_01.txt AC 123 ms 84504 KiB
test_01.txt AC 123 ms 84424 KiB
test_02.txt AC 124 ms 84420 KiB
test_03.txt AC 122 ms 84560 KiB
test_04.txt AC 341 ms 134016 KiB
test_05.txt AC 361 ms 134772 KiB
test_06.txt AC 349 ms 135064 KiB
test_07.txt AC 3074 ms 317220 KiB
test_08.txt AC 3010 ms 319064 KiB
test_09.txt AC 2995 ms 318628 KiB
test_10.txt AC 2978 ms 317624 KiB
test_11.txt AC 2748 ms 318656 KiB
test_12.txt AC 3099 ms 317920 KiB
test_13.txt AC 2484 ms 318416 KiB
test_14.txt AC 2645 ms 318892 KiB
test_15.txt AC 2425 ms 318712 KiB
test_16.txt AC 2755 ms 319016 KiB
test_17.txt AC 2744 ms 317308 KiB
test_18.txt AC 2808 ms 318724 KiB
test_19.txt AC 2869 ms 317732 KiB
test_20.txt AC 2803 ms 319080 KiB
test_21.txt AC 2829 ms 318280 KiB
test_22.txt AC 2126 ms 317208 KiB
test_23.txt AC 2178 ms 316256 KiB
test_24.txt AC 2217 ms 313432 KiB
test_25.txt AC 2127 ms 313256 KiB
test_26.txt AC 1801 ms 279592 KiB
test_27.txt AC 1918 ms 248380 KiB
test_28.txt AC 2115 ms 295540 KiB
test_29.txt AC 2402 ms 298972 KiB
test_30.txt AC 1374 ms 247888 KiB
test_31.txt AC 1449 ms 228848 KiB
test_32.txt AC 3103 ms 318524 KiB
test_33.txt AC 3156 ms 317428 KiB
test_34.txt AC 3183 ms 317872 KiB
test_35.txt AC 3210 ms 317668 KiB
test_36.txt AC 3125 ms 318040 KiB
test_37.txt AC 3095 ms 318196 KiB