SumOfAll

Time limit: 1s
Memory limit: 128MB
Input:
Output:

Cerință

Se dă un vector de NN numere naturale. Se dau de asemenea QQ query-uri de forma [l,r][l, r], unde se cere suma tuturor subsecvențelor de elemente consecutive. Mai formal, pentru fiecare query [l,r][l, r], se cere rezultatul funcției F(l,r)=i=lrj=irS(i,j)F(l, r) = \sum_{i=l}^{r} \sum_{j=i}^{r} S(i, j), unde S(l,r)S(l, r) este suma tuturor elementelor din secvența [l,r][l, r].

Date de intrare

N Q
A[1] A[2] ... A[N]
L[1] R[1]
L[2] R[2]
...
L[Q] R[Q]

Date de ieșire

S[1]
S[2]
...
S[Q]

Restricții și precizări

  • Se recomandă folosirea fastio.
  • 1N,Q500 0001 ≤ N, Q ≤ 500\ 000
  • 0A[i]1 000 000 0000 ≤ A[i] ≤ 1\ 000\ 000\ 000
  • 1lrN1 ≤ l ≤ r ≤ N
  • Deoarece răspunsurile sunt prea mari pentru a fi reprezentate de tipurile de date implicite din limbajul C++, se vor afișa modulo 232{2}^{32}.
# Punctaj Restricții
1 20 1N,Q5001 ≤ N, Q ≤ 500
2 10 1N,Q2 5001 ≤ N, Q ≤ 2\ 500
3 20 1N,Q50 0001 ≤ N, Q ≤ 50\ 000
4 50 1N,Q500 0001 ≤ N, Q ≤ 500\ 000

Exemplu

stdin

5 4
5 3 2 4 2
3 4
3 5
4 5
1 5

stdout

12
28
12
109

Explicație

Pentru primul query (secvența [3,4][3, 4]), suma este 2+4+(2+4)=122 + 4 + (2 + 4) = 12.

Pentru al doilea query (secvența [3,5][3, 5]), suma este 2+4+2+(2+4)+(4+2)+(2+4+2)=282 + 4 + 2 + (2 + 4) + (4 + 2) + (2 + 4 + 2) = 28.

Pentru al treilea query (secvența [4,5][4, 5]), suma este 4+2+(4+2)=124 + 2 + (4 + 2) = 12.

Pentru al patrulea query (secvența [1,5][1, 5]), suma este 5+3+2+4+2+(5+3)5 + 3 + 2 + 4 + 2 + (5 + 3) + (3+2)+(2+4)+(4+2)+(5+3+2)+\ (3 + 2) + (2 + 4) + (4 + 2) + (5 + 3 + 2) + (3+2+4)+(2+4+2)+(5+3+2+4)+(3+2+4+2)+\ (3 + 2 + 4) + (2 + 4 + 2) + (5 + 3 + 2 + 4) + (3 + 2 + 4 + 2) + (5+3+2+4+2)=109+\ (5 + 3 + 2 + 4 + 2) = 109.

Problem info

ID: 2579

Editor: moldovan_robert_lol

Author:

Tags:

Log in or sign up to be able to send submissions!