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