CF83A Magical Array
题目描述
Valery 对魔法非常感兴趣。魔法如此吸引他,以至于他在生活中的每个角落都能看到魔法的影子。他总是用超自然力量的介入来解释一切奇怪和异样的现象。但谁能想到,即使在一串普通的数字数组中,Valera 也能看到美丽与神奇。
Valera 完全是偶然得到了一张写有数字数组的古代羊皮纸。他立刻觉得,这些数组中的数字绝非随机。经过长时间研究,Valera 得出一个“魔法数组”应具备的神奇条件:如果一个数组的最小值和最大值相等,则称其为魔法数组。
他决定把这个非凡的发现告诉你,并希望你帮他一个忙。尽管 Valera 智慧卓绝,却不擅长计数,所以你需要帮他完成统计工作。你要做的,就是统计写在羊皮纸上的原始数组中有多少个子数组是魔法的。子数组指的是数组中一段连续且非空的元素序列。
输入格式
输入的第一行为一个整数 $n$,表示数组的长度,$1 \leq n \leq 10^5$。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,表示原始数组,$-10^9 \leq a_i \leq 10^9$。
输出格式
输出一个整数,表示魔法子数组的个数。
请不要在 C++ 中使用 %lld 读取或输出 64 位整数,建议使用 cin、cout 流(也可以使用 %I64d)。
说明/提示
样例测试的补充说明:
在样例一中,魔法子数组用起止下标对 \[a;b\] 表示。
魔法子数组依次为:\[1;1\],\[2;2\],\[3;3\],\[4;4\],\[2;3\]。
在样例二中:
魔法子数组依次为:\[1;1\],\[2;2\],\[3;3\],\[4;4\],\[5;5\],\[1;2\],\[2;3\],\[1;3\]。
由 ChatGPT 5 翻译