3717: 学习绝对值(第三轮03)

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

鸡尾酒的丹丹学了三个月 C + +  基础, 今天终于学到了条件分支  if   里面的逻 辑运算 &&    ||,经过一段时间的学习之后,鸡尾酒问大家  ||   是什么意思,大 家异口同声:绝对值符号。

看到大家这么喜欢绝对值,于是鸡尾酒给了大家一个简单的问题:给定 n  个数 字,数字只可能是  −2  − 1 2  四个中的一个。请问有多少个子数组满足其 最大值的绝对值等于最小值的绝对值?

丹丹看到题目后连忙提问:”老师,你说的第一个数字这个 2  前面的横杠是啥?“

看来丹丹是做不出来了,你可以帮帮他吗?

备注:子数组指的是连续的一段。

输入

第一行输入一个正整数  n,接下来一行输入  n 个数字, 仅可能是  -2 -1 1、2  中的一个。

输出

输出一行一个数字表示答案。

样例输入 复制

4
-2 -1 1 2

样例输出 复制

6

提示

样例 1 输入】

4

-2 -1 1 2

【样例 1 输出】

6

【样例 1 说明】

[-2] [-1] [1] [2] [-1,1] [-2,-1,1,2] 这六个子数组满足最大值和最小值的绝 对值相等。

【样例 2 输入】

1

1

【样例 2 输出】

1

【样例 3 输入】

5

1 -1 2 -1 1

【样例 3 输出】

7

【数据范围】

本题共有  10  个测试点

对于  1 − 2  测试点,有 n ≤ 5000

对于 3  测试点,有 n ≤ 50000

对于 4  测试点,所有数字的绝对值相等。1 ≤ n ≤ 50000

对于 5  测试点,所有数字均为正整数。1 ≤ n ≤ 100000

对于 6 − 7 测试点,没有  −2  这个数字, 1 ≤ n ≤ 100000

对于 8  测试点, 1 ≤ n ≤ 100000

对于 9 − 10  测试点, 1 ≤ n ≤ 500000


来源/分类