TRUY VẤN TRỌNG SỐ (WQUERY)

Xem dạng PDF

Gửi bài giải

Điểm: 0,10 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho dãy số nguyên dương ~A = (a_0, a_1, \ldots, a_{n-1})~. Với một đoạn các phần tử liên tiếp ~a[L \ldots R]~ trong ~A~, người ta tính trọng số của nó theo cách sau:

Với mỗi số nguyên dương ~x~, gọi ~f(x)~ là số lần xuất hiện giá trị ~x~ trong đoạn ~a[L \ldots R]~. Khi đó trọng số của đoạn này được tính bằng

$$\sum_{x} f(x)^2 \cdot x$$

Bạn được cho ~q~ truy vấn, mỗi truy vấn ứng với một đoạn ~a[L \ldots R]~. Hãy cho biết trọng số của ~a[L \ldots R]~.

Input
  • Dòng đầu tiên chứa hai số nguyên dương ~n, q~ ~(n \le 10^5; q \le 10^5)~.
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_0, a_1, \ldots, a_{n-1}~ ~(a_i \le 10^6)~.
  • ~q~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~L, R~ ~(0 \le L \le R < n)~ ứng với một truy vấn.
Output
  • Ứng với mỗi truy vấn, in ra trên một dòng trọng số tìm được.

Sample Input
8 2
1 1 2 2 1 3 1 1
0 5
1 6
Sample Output
20
20
Notes
  • ~a[0 \ldots 5] = (1, 1, 2, 2, 1, 3)~;
  • ~a[1 \ldots 6] = (1, 2, 2, 1, 3, 1)~.

Cả hai đoạn này đều có ~f(1) = 3~, ~f(2) = 2~, ~f(3) = 1~, nên trọng số bằng

$$3^2 \times 1 + 2^2 \times 2 + 1^2 \times 3 = 20$$


Đang tải...