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

Pe prima linie se citesc două numere întregi NN și QQ.

Pe a doua linie, se citește un vector AA cu NN elemente. Elementele acestui vector sunt separate prin spațiu.

Pe următoarele QQ linii, se citesc perechi de numere întregi ll și rr, care definesc o subsecvență în vectorul AA.

Date de ieșire

Pentru fiecare dintre cele QQ query-uri, se afișează pe o linie separată rezultatul.

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.

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