DivPlusMinus

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

Lui M29 îi plac jocurile cu subsecvențe. Pentru o secvență dată, M29 îi calculează frumusețea.

Fie subsecvența C=(c1,c2,,ck)C = (c_1, c_2, \dots, c_k). Notăm frumusețea cu BB.

Calculăm frumusețea adunând elementele care au în secvență un divizor (diferit de propria poziție) și scăzându-le pe cele care nu au:

B=S+SB = S_{+} - S_{-}

Unde sumele sunt definite după indici (ii și jj):

S+=1ikexista˘ ji a.ıˆcjciciS_{+} = \sum_{\substack{1 \le i \le k \\ \text{există } j \neq i \text{ a.î. } c_j | c_i}} c_iS=1iknu exista˘ ji a.ıˆcjciciS_{-} = \sum_{\substack{1 \le i \le k \\ \text{nu există } j \neq i \text{ a.î. } c_j | c_i}} c_i

M29 și-a dat seama că nu poate calcula răspunsul pentru atât de multe subsecvențe, astfel că vă pune pe voi să o faceți.

Cerință

Se dă un șir AA cu NN elemente indexate de la 11.
De asemenea, se dau QQ întrebări. Pentru fiecare întrebare, primiți două numere ll și rr și trebuie să calculați frumusețea subsecvenței (A[l],,A[r])(A[l], \dots, A[r]).

Date de intrare

Se citesc de la tastatură:

  • Pe prima linie numerele NN și QQ.
  • Pe următoarea linie NN numere, elementele șirului AA.
  • Pe următoarele QQ linii, două valori ll și rr.

Date de ieșire

Se vor afișa QQ linii. Pe linia ii se va afișa răspunsul pentru întrebarea ii.

Restricții și precizări

  • 1Q2000001 \le Q \le 200\,000
  • 1N1000001 \le N \le 100\,000
  • 1lrN1 \le l \le r \le N
  • 1Ai10000001 \le A_i \le 1\,000\,000
# Punctaj Restricții
1 12 1N,Q1001 \leq N, Q \leq 100
2 10 1N100,1Q100 0001 \leq N \leq 100, 1 \leq Q \leq 100 \ 000
3 21 1N1 000,1Q200 0001 \leq N \leq 1 \ 000, 1 \leq Q \leq 200 \ 000
4 19 1NQ1 000 0001 \leq N \cdot Q \leq 1 \ 000 \ 000
5 15 1N,Q50 0001 \leq N, Q \leq 50 \ 000
6 23 Fără alte restricții

Exemplu

stdin

7 6
1 2 3 4 10 12 12
1 3
2 2
5 6
1 7
2 5
6 7

stdout

4
-2
-22
42
9
24

Explicație

  1. Pentru primul query (subsecvența 1, 2, 3): Se adună 2 și 3 (pentru că ambele îl au pe 1 ca divizor) și se scade 1. Răspunsul este 2+31=42 + 3 - 1 = 4.
  2. Pentru al cincilea query: Se scad 2 și 3 și se adaugă 4 și 10 (îl au ca divizor pe 2).
  3. Pentru al șaselea query: Se adaugă 12 și 12 (A[6]A[6] îl are ca divizor pe A[7]A[7], iar A[7]A[7] îl are ca divizor pe A[6]A[6]).

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