Ta sẽ xây dựng một cây Segment tree với mỗi node là một Stack và chúng ta sẽ lưu (len, type) với len là độ dài của Stack và type là tính chất của ngoặc vuông hoặc tròn tại đáy của Stack vì việc đổi chiều dấu ngoặc là không tốn chi phí. Đặt type = 0 nếu ngoặc tại i là ngoặc tròn, ngược lại type = 1. Ta có thể dễ dàng nhận thấy rằng Stack của mỗi node sẽ có dạng 10101 … hoặc 01010… phụ thuộc vào type và len. Các trường hợp giúp ta kết hợp 2 node a và b bất kì:
Độ phức tạp: Q \times log(n) cho mỗi test.