CF86D Powerful array

题目描述

给定一个正整数数组 $a_1, a_2, \ldots, a_n$。我们来考虑它的任意一个子数组 $a_l, a_{l+1}, \ldots, a_r$,其中 $1 \leq l \leq r \leq n$。对于每一个正整数 $s$,记 $K_s$ 为该子数组中 $s$ 出现的次数。我们定义该子数组的“幂”为对每个出现过的 $s$ 计算 $K_s \cdot K_s \cdot s$ 的和。由于数组中的不同值有限,这个和中非零项是有限的。 你需要计算给定的 $t$ 个子数组的“幂”。

输入格式

第一行包含两个整数 $n$ 和 $t$($1 \leq n, t \leq 200000$),分别表示数组长度和询问数量。 第二行包含 $n$ 个正整数 $a_i$($1 \leq a_i \leq 10^6$),表示数组的元素。 接下来 $t$ 行,每行包含两个正整数 $l$,$r$($1 \leq l \leq r \leq n$),表示每个询问对应的子数组的左右端点。

输出格式

输出 $t$ 行,第 $i$ 行输出第 $i$ 个询问所对应子数组的幂。 请不要在 C++ 中使用 %lld 读取或输出 64 位整数。推荐使用 cout 流(也可以使用 %I64d)。

说明/提示

考虑如下数组(见第二个样例),及其 $[2, 7]$ 的子数组(子数组的元素已用色彩标记): ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF86D/5e3c36b108711f9f95c3c3519472e9f583328f8b.png) 在该子数组中,$K_1 = 3$,$K_2 = 2$,$K_3 = 1$,因此幂为 $3^2 \cdot 1 + 2^2 \cdot 2 + 1^2 \cdot 3 = 20$。 由 ChatGPT 5 翻译