#1761. 小 C 的数组(array)

小 C 的数组(array)

题目描述

小 C 终于成为一名萌新 OIer,最近他在学习数组。

小 C 要练习数组。一次,小 C 得到了一个长度为 nn 的数组 aa

现在,对于每一个下标 ii,小 C 想找出比 ii 小且距离 ii 最近 的下标 jj,使得满足 aiaja_i \neq a_j,如果不存在,则 j=0j = 0。记下标 ii 对应的答案 fi=jf_i = j,小 C 为了确保自己的程序正确,想让你来检查 ff 数组。

可你不能告诉他整个答案,你只需要告诉他 ff 数组所有元素的和即可。

输入格式

从文件 array.in 中读取数据。

共两行,第一行一个正整数 nn,表示数组长度;

第二行 nn 个正整数,第 ii 个表示 aia_i

输出格式

输出到文件 array.out 中。

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

样例

6
1 1 2 3 2 1
14

解释#1

fif_i 依次为 (0,0,2,3,4,5)(0, 0, 2, 3, 4, 5),总和为 1414

12
3 3 3 3 2 2 2 2 4 4 1 1
52

解释#2

fif_i 依次为 (0,0,0,0,4,4,4,4,8,8,10,10)(0, 0, 0, 0, 4, 4, 4, 4, 8, 8, 10, 10),总和为 5252

样例3

见选手目录下的 array/array3.inarray/array3.ans

数据范围

对于 40%40\% 的数据:n10001ai10n ≤ 1000,1 ≤ a_i ≤ 10,且保证数据随机; 对于 70%70\% 的数据:n1061ai10n ≤ 10^6,1 ≤ a_i ≤ 10,且保证数据随机; 对于 90%90\% 的数据:n1061ai10n ≤ 10^6,1 ≤ a_i ≤ 10; 对于 100%100\% 的数据:n1061ai1000n ≤ 10^6,1 ≤ a_i ≤ 1000。 随机数据的生成方式如下:对于每一个 aia_i,等概率地从 111010 中产生。