Algorithm

Block Placement Queries

Solution
class Solution:
    def __init__(self):
        self.seg = []
        self.st = SortedList()
        self.mx = 50000

    def update(self, idx: int, val: int, p: int, l: int, r: int) -> None:
        if l == r:
            self.seg[p] = val
            return
        mid = (l + r) >> 1
        if idx <= mid:
            self.update(idx, val, p << 1, l, mid)
        else:
            self.update(idx, val, p << 1 | 1, mid + 1, r)
        self.seg[p] = max(self.seg[p << 1], self.seg[p << 1 | 1])

Time Complexity

O(q log q + q log M)

Space Complexity

O(M + q)
Put Your Ad HereReach thousands of highly targeted software engineers. Click to inquire.