#P0104. 区间查询

区间查询

题目描述

给定一个长度为 nn 的数列 a1,a2,,ana_1, a_2, \ldots, a_n。有 qq 次查询操作,每次查询操作会给你两个整数 llrr,你需要回答出区间 [l,r][l, r] 范围内所有出现过的数值与它出现次数的平方的乘积之和(举个例子,如果这个数值为 ss,而 KsK_s 对应区间 [l,r][l, r] 范围内等于 ss 的元素个数,则你需要求的是 s×Ks×Kss \times K_s \times K_s)之和,即 ss×Ks2\sum\limits_s s \times K_s^2

举个例子,如果查询的区间范围内有 33 个数值为 22 的数,55 个数值为 33 的数,则对应的查询结果为 2×32+3×52=932 \times 3^2 + 3 \times 5^2 = 93

输入格式

第一行,两个整数 nnqq1n,q2×1051 \le n,q \le 2 \times 10^5),分别表述出列长度及查询次数。

第二行,nn 个整数 a1,a2,,an(1ai106)a_1, a_2, \ldots, a_n(1 \le a_i \le 10^6)

接下来 qq 行,每行包含两个整数 llrr1lrn1 \le l \le r \le n),表示一次查询。

输出格式

输出共 qq 行,每行包含一个整数,表示查询的结果。

样例

8 3
1 1 2 1 2 3 2 2
1 3
2 5
2 8
6
12
39

说明/提示

样例解释

  • 对于第 11 次询问的区间 [1,3][1,3]11 出现了 22 次,22 出现了 11 次,对应的查询结果为 1×22+2×12=61 \times 2^2 + 2 \times 1^2 = 6
  • 对于第 22 次询问的区间 [2,5][2,5]11 出现了 22 次,22 出现了 22 次,对应的查询结果为 1×22+2×22=121 \times 2^2 + 2 \times 2^2 = 12
  • 对于第 33 次询问的区间 [2,8][2,8]11 出现了 22 次,22 出现了 44 次,33 出现了 11 次,对应的查询结果为 1×22+2×44+3×12=391 \times 2^2 + 2 \times 4^4 + 3 \times 1^2 = 39

数据规模与约定

  • 对于 30%30\% 的数据,n,q20n, q \le 20
  • 对于 60%60\% 的数据,n,q2000n, q \le 2000
  • 对于 100%100\% 的数据,1n,q2×105,1ai1061 \le n, q \le 2 \times 10^5, 1 \le a_i \le 10^6