#B4453. [海淀区普及组 2025 T1] 序列相似对

[海淀区普及组 2025 T1] 序列相似对

题目描述

元旦联欢会即将到来,老师提前调查了班里 nn 名同学中第 ii 位同学喜欢的零食编号是 aia_{i}。为了统计同学们喜爱零食的相似程度,老师定义了如下指标:一个序列的权值被定义为满足 ai=aja_{i}=a_{j} 的下标对 (i,j)(i, j)(其中 i<ji<j)的数量。例如,序列 a=[1,1,2,2,1]a=[1,1,2,2,1] 的权值为 4,具有相同值的下标对为 (1,2)(1,2)(1,5)(1,5)(2,5)(2,5)(3,4)(3,4)

对于一个长度为 nn 的零食喜好序列 aa,请你帮老师求出所有子段的权值之和。

如果序列 bb 可以通过从序列 aa 的开头删除若干(可能为零或全部)元素,并从结尾删除若干(可能为零或全部)元素得到,则称 bbaa 的一个子段。

输入格式

第一行包含一个整数 nn1n1051 \leq n \leq 10^{5})。

第二行包含 nn 个整数 a1,a2,,ana_{1}, a_{2}, \cdots, a_{n}1ai1091 \leq a_{i} \leq 10^{9})。

输出格式

输出一个整数,表示序列的所有子段的权值之和。

4
1 2 1 1
6

提示

样例 1 解释:

长度为 1 的子段不可能有满足条件的下标对,而序列所有长度大于 1 的子段为:

  • 第一组:[1,2][1,2],0 个满足条件的下标对;
  • 第二组:[1,2,1][1,2,1],1 个满足条件的下标对((1,3)(1,3));
  • 第三组:[1,2,1,1][1,2,1,1],3 个满足条件的下标对((1,3)(1,3)(1,4)(1,4)(3,4)(3,4));
  • 第四组:[2,1][2,1],0 个满足条件的下标对;
  • 第五组:[2,1,1][2,1,1],1 个满足条件的下标对((2,3)(2,3));
  • 第六组:[1,1][1,1],1 个满足条件的下标对((1,2)(1,2));

总计:0+1+3+0+1+1=60 + 1 + 3 + 0 + 1 + 1 = 6

数据范围:

对于前 30% 的数据,满足 n1000n \leq 1000

对于另外 20% 的数据,满足输入的 aia_{i} 互不相等;

对于另外 20% 的数据,满足输入的 aia_{i} 全部相等;

对于 100% 的数据,满足“输入格式”中给出的数据范围。