Gya-chan and the gcd operation

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

"Memories don't live like people do. They always 'member you"

Se dau doi vectori AA și BB, ambii cu NN elemente, și definiția următoarei funcții:

long long f(int A[], int B[], int n){
    long long sum = 0;
    for(int i = 1; i <= n; i++)
        for(int j = i+1; j <= n; j++)
            if(B[i] == B[j]) sum += __gcd(A[i], A[j]);
    return sum;
}

Gya-chan, fiind foarte nerăbdătoare să își deschidă cadourile, se trezește în toiul nopții cu speranța să le găsească deja sub brad. Surpriză mare când în drum spre brad dă peste chiar unicul și preaiubitul Moș Crăciun. Acesta, supărat că a fost prins, decide să-i dea fetei o provocare.

Cerință

Moș Crăciun îi pune fetei QQ întrebări de forma (a,b)(a, b), iar fata trebuie să spună care este valoarea returnată de funcția ff dacă se va înlocui BaB_a cu bb. Actualizările lui Moș Crăciun sunt permanente, cu alte cuvinte, după fiecare operație, modificările aduse vectorului BB se vor păstra.

Date de intrare

Pe prima linie se află două numere, NN, reprezentând numărul de elemente din cei doi vectori, și QQ, numărul de întrebări. Pe următoarele două linii se află câte NN numere, prima linie conținând elementele din vectorul AA, iar a doua din vectorul BB. Pe ultimele QQ linii se află întrebările puse de Moș Crăciun.

Date de ieșire

Se vor afișa Q+1Q + 1 linii, prima desemnând valoarea inițială a funcției, iar pe următoarele QQ linii sunt răspunsurile după fiecare modificare.

Restricții și precizări

  • 1N,Q21051 \leq N, Q \leq 2 \cdot 10^5
  • 1Ai31051 \leq A_i \leq 3 \cdot 10^5, 1iN1 \leq i \leq N
  • 1BiN1 \leq B_i \leq N după fiecare operație
  • Bahoi vrea să bulănească problema, dar este complet interzis!!! Numărul de elemente distincte ale vectorului BB este BULAN\leq BULAN. NU Primiți 5 puncte dacă ghiciți valoarea BULANBULAN
    # Punctaj Restricții
    1 13 1N101 \leq N \leq 10
    2 12 1Ai1001 \leq A_i \leq 100, 1iN1 \leq i \leq N
    3 19 1N1 0001 \leq N \leq 1\ 000
    4 25 1N1051 \leq N \leq 10^5
    5 31 Fără restricții suplimentare

Exemplul 1

stdin

3 2
2 3 2 
2 2 1 
3 2
2 1

stdout

1
4
2

Explicație

Înainte de prima modificare, valoarea returnată de funcția ff va fi gcd(2,3)=1\gcd(2,3) = 1.
După prima modificare, valoarea returnată va fi gcd(2,2)+gcd(2,3)+gcd(2,3)=2+1+1=4\gcd(2,2) + \gcd(2,3) + \gcd(2,3) = 2 + 1 + 1 = 4.

Exemplul 2

stdin

10 4
1 10 9 2 3 10 9 9 1 8 
2 2 2 4 2 1 3 1 1 2 
5 4
4 1
6 3
8 3

stdout

16
11
14
11
19

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