結果
問題 |
No.789 範囲の合計
|
ユーザー |
![]() |
提出日時 | 2025-03-14 10:03:24 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,122 bytes |
コンパイル時間 | 380 ms |
コンパイル使用メモリ | 82,776 KB |
実行使用メモリ | 174,800 KB |
最終ジャッジ日時 | 2025-03-14 10:03:40 |
合計ジャッジ時間 | 14,270 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 6 TLE * 6 MLE * 3 |
ソースコード
class SegTree: class Node: def __init__(self, pos, val): self.pos = pos self.val = val self.agg = val self.l = None self.r = None def __init__(self, op, e, n): self.op = op self.e = e self.n = n self.root = None def _set(self, p, x, node, l, r): if r - l == 1: if x == self.e: return None return self.Node(p, x) m = (l + r) // 2 if node is None: node = self.Node(-1, self.e) if p < m: node.l = self._set(p, x, node.l, l, m) else: node.r = self._set(p, x, node.r, m, r) left_val = node.l.agg if node.l is not None else self.e right_val = node.r.agg if node.r is not None else self.e node.agg = self.op(left_val, right_val) if node.agg == self.e and node.l is None and node.r is None: return None return node def set(self, p, x): self.root = self._set(p, x, self.root, 0, self.n) def _get(self, p, node, l, r): if node is None: return self.e if r - l == 1: return node.val m = (l + r) // 2 if p < m: return self._get(p, node.l, l, m) else: return self._get(p, node.r, m, r) def get(self, p): return self._get(p, self.root, 0, self.n) def _prod(self, ql, qr, node, l, r): if node is None or qr <= l or r <= ql: return self.e if ql <= l and r <= qr: return node.agg m = (l + r) // 2 left_prod = self._prod(ql, qr, node.l, l, m) right_prod = self._prod(ql, qr, node.r, m, r) return self.op(left_prod, right_prod) def prod(self, l, r): return self._prod(l, r, self.root, 0, self.n) def op(x, y): return x + y e = 0 n = int(input()) st = SegTree(op, e, 10**9+1) ans = 0 for _ in range(n): t, x, y = map(int, input().split()) if t == 0: st.set(x, st.get(x) + y) else: ans += st.prod(x, y + 1) print(ans)