結果
| 問題 |
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)