(self, idx, left, right)
| 36 | return idx * 2 + 1 |
| 37 | |
| 38 | def build(self, idx, left, right): |
| 39 | if left == right: |
| 40 | self.st[idx] = self.A[left] |
| 41 | else: |
| 42 | mid = (left + right) // 2 |
| 43 | self.build(self.left(idx), left, mid) |
| 44 | self.build(self.right(idx), mid + 1, right) |
| 45 | self.st[idx] = max(self.st[self.left(idx)], self.st[self.right(idx)]) |
| 46 | |
| 47 | def update(self, a, b, val): |
| 48 | """ |