SP3981 MBRACKET - Shortest Regular Bracket

题目描述

考虑一个仅由圆括号 `(`, `)` 和方括号 `[`, `]` 组成的序列。我们称一个括号序列为**正规**的,如果它符合以下递归规则: 1. 单个括号对 `()` 和 `[]` 是正规的。 2. 如果序列 $A$ 是正规的,那么包裹 $A$ 的 `(A)` 和 `[A]` 也是正规的。 3. 如果 $A$ 和 $B$ 都是正规的,那么它们的连接 $AB$ 也是正规的。 例如,序列 `() () []`、`( []) [()]` 和 `[(())] []` 是正规的,而 `(`、`] [`、`[ (` 和 `( [ ) ]` 则不是正规的。现在我们给出一个括号序列。 在操作中,每次会在序列的开头或结尾插入一个括号(可以是圆括号或方括号,左括号或右括号)。 请编写一个程序,要求在每次插入操作后,找出包含此次插入的括号在内的最短连续正规子序列的长度。如果没有这样的子序列,则输出 `0`。

输入格式

第一行是初始的括号序列,长度不超过 $100,000$ 个字符。 第二行是一个整数 $N$,表示将进行的插入操作数。$1 \leq N \leq 100,000$。 接下来的 $N$ 行,每行包含一个字符 `(`, `)`, `[`, `]` 和一个整数 $0$ 或 $1$,表示将括号插入序列的开头(用 $0$ 表示)或结尾(用 $1$ 表示)。

输出格式

对于每一次插入操作,请输出当前序列中最短包含此次插入的括号的连续正规子序列的长度。如果找不到这样的子序列,则输出 `0`。 **本翻译由 AI 自动生成**