问题 5053 --小C的数组(array)

5053: 小C的数组(array)

题目描述

  小 C 终于成为一名萌新 OIer,最近他在学习数组。
小 C 要练习数组。一次,小 C 得到了一个长度为 n 的数组 a。
现在,对于每一个下标 i,小 C 想找出比 i 小. 且距离 i 最近的下标 j,使得满足 ai != aj,如果不存在,则 j = 0。记下标 i 对应的答案 fi = j,小 C 为了确保自己的程序正确,想让你来检查 f 数组。
可你不能告诉他整个答案,你只需要告诉他 f 数组所有元素的和即可。

输入

共两行,第一行一个正整数 n,表示数组长度;
第二行 n 个正整数,第 i 个表示 ai。

输出

仅一行一个数,表示 f 数组所有元素的和。

样例输入输出

输入#1 复制
6
1 1 2 3 2 1
输出#1 复制
14
输入#2 复制
12
3 3 3 3 2 2 2 2 4 4 1 1
输出#2 复制
52

提示

【样例 1 解释】
fi 依次为 (0, 0, 2, 3, 4, 5),总和为 14。
【样例 2 解释】
fi 依次为 (0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 10, 10),总和为 52。
【数据范围】
对于 40% 的数据:n ≤ 1000,1 ≤ ai ≤ 10,且保证数据随机;
对于 70% 的数据:n ≤ 10^6,1 ≤ ai ≤ 10,且保证数据随机;
对于 90% 的数据:n ≤ 10^6,1 ≤ ai ≤ 10;
对于 100% 的数据:n ≤ 10^6,1 ≤ ai ≤ 1000。
随机数据的生成方式如下:对于每一个 ai,等概率地从 1 到 10 中产生。

序号 标题 作者 发表时间 费用 订购数 操作