結果

問題 No.1000 Point Add and Array Add
ユーザー suisensuisen
提出日時 2024-12-22 21:59:01
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 481 ms / 2,000 ms
コード長 648 bytes
コンパイル時間 458 ms
コンパイル使用メモリ 82,076 KB
実行使用メモリ 163,348 KB
最終ジャッジ日時 2024-12-22 21:59:09
合計ジャッジ時間 8,171 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
53,636 KB
testcase_01 AC 38 ms
52,676 KB
testcase_02 AC 39 ms
52,824 KB
testcase_03 AC 38 ms
52,676 KB
testcase_04 AC 39 ms
53,424 KB
testcase_05 AC 39 ms
53,256 KB
testcase_06 AC 39 ms
53,068 KB
testcase_07 AC 40 ms
53,200 KB
testcase_08 AC 40 ms
53,268 KB
testcase_09 AC 39 ms
52,664 KB
testcase_10 AC 48 ms
53,008 KB
testcase_11 AC 37 ms
52,468 KB
testcase_12 AC 87 ms
77,116 KB
testcase_13 AC 79 ms
75,272 KB
testcase_14 AC 91 ms
77,548 KB
testcase_15 AC 93 ms
77,140 KB
testcase_16 AC 356 ms
133,340 KB
testcase_17 AC 356 ms
124,080 KB
testcase_18 AC 453 ms
163,284 KB
testcase_19 AC 460 ms
163,276 KB
testcase_20 AC 417 ms
147,908 KB
testcase_21 AC 420 ms
150,904 KB
testcase_22 AC 481 ms
163,348 KB
testcase_23 AC 459 ms
163,316 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

n, q = map(int, input().split())
a = list(map(int, input().split()))

f = [0] * n


def ft_add(i: int, v: int) -> None:
    i += 1
    while i <= n:
        f[i - 1] += v
        i += i & -i


def ft_sum(i: int) -> int:
    s = 0
    while i:
        s += f[i - 1]
        i -= i & -i
    return s


qs: list[tuple[str, int, int]] = [("A", i, a[i]) for i in range(n)]
for _ in range(q):
    c, x_, y_ = input().split()
    qs.append((c, int(x_) - 1, int(y_)))

ans = [0] * n
for op, x, y in reversed(qs):
    if op == "A":
        ans[x] += ft_sum(x + 1) * y
    else:
        ft_add(x, +1)
        if y != n:
            ft_add(y, -1)
print(*ans)
0