CF1556C Compressed Bracket Sequence

题目描述

![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1556C/3e1271d095f65d6764f1796fd73b8947fda1c3d9.png) William 有一个最喜欢的括号序列。由于他最喜欢的序列非常大,他用一个正整数序列 $c_1, c_2, \dots, c_n$ 来表示,其中 $c_i$ 表示连续的括号数量:如果 $i$ 是奇数,则表示连续 $c_i$ 个左括号“(”,如果 $i$ 是偶数,则表示连续 $c_i$ 个右括号“)”。 例如,对于括号序列“((())()))”,对应的数字序列为 $[3, 2, 1, 3]$。 你需要求出原括号序列中有多少个连续子序列(子区间)$[l, r]$($l \le r$),它们本身是合法的括号序列。 一个括号序列被称为合法(regular),当且仅当可以通过在括号之间插入字符“+”和“1”得到一个正确的算术表达式。例如,“(())()”、“()”和“(()(()))”是合法的,而“) (”、“(()”和“(())) (”是不合法的。

输入格式

第一行包含一个整数 $n$($1 \le n \le 1000$),表示压缩序列的长度。 第二行包含 $n$ 个整数 $c_1, c_2, \dots, c_n$($1 \le c_i \le 10^9$),表示压缩后的括号序列。

输出格式

输出一个整数,表示原括号序列中有多少个子区间是合法的括号序列。 可以保证答案不会超过有符号 64 位整数的范围。

说明/提示

在第一个样例中,括号序列为“(((()(()))(”,其中包含 $5$ 个合法的括号子区间: 1. 第 $3$ 到第 $10$ 个字符:(()(())) 2. 第 $4$ 到第 $5$ 个字符:() 3. 第 $4$ 到第 $9$ 个字符:()(()) 4. 第 $6$ 到第 $9$ 个字符:(()) 5. 第 $7$ 到第 $8$ 个字符:() 在第二个样例中,括号序列为“()))(()(())))”。 在第三个样例中,括号序列为“()()(())”。 由 ChatGPT 4.1 翻译