結果
問題 |
No.1000 Point Add and Array Add
|
ユーザー |
|
提出日時 | 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 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 22 |
ソースコード
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)