Problem

1 /8


Le montant sur la ligne

Theory Click to read/hide

Qu'il y ait un tableau. En l'absence de changements, on peut trouver rapidement (plus vite qu'une ligne) la valeur de certaines fonctions sur un sous-segment de ce tableau. Pour ce faire, nous devons utiliser de la mémoire supplémentaire et effectuer un pré-calcul.
Par exemple, nous devons trouver rapidement la somme sur un segment du tableau.
Obtenons un tableau de sommes de préfixes, dans lequel l'indice i sera la somme de tous les éléments du tableau avec des indices inférieurs ou égaux à i.
un[] – tableau donné, p[] – tableau de sommes de préfixes


Nombre de tableaux p :
Évidemment p[0] = a[0]. Notez que nous pouvons facilement recalculer p[i] via p[i – 1], car le montant sur le préfixe i est le montant sur le préfixe i – 1 + a[i].
Ainsi, le code de calcul des sommes de préfixe ressemble à ceci :

entier a[n], p[n] ;
p[0] = un[0< /span>] ;
pour (int i = 1 ; je < n; je++)
         p[i] = p[i -  1] + un[i] ;

De plus, nous notons que la somme sur le segment – la différence entre les deux sommes sur le préfixe.


Vert = rouge – bleu
Ainsi, s'il faut trouver la somme sur l'intervalle [l,r], alors la réponse est p[r] – p[l-1].
Cependant, si je – 1 élément peut ne pas exister. Afin de se passer de if’s, vous pouvez saisir une indexation à 1, et a[0] et p[0] auront des valeurs neutres (0 pour la somme).
 
Notez que cette technique est un cas particulier de la formule d'inclusion-exclusion, de cette manière, il est possible de stocker non seulement des sommes, mais également d'autres fonctions, telles que la multiplication et le xor.
 

Problem

Étant donné un tableau immuable de longueur n et des requêtes q comme “calculer la somme d'un sous-segment de tableau de l à r ". Imprimez la réponse pour chaque requête.

Entrée
La première ligne contient un nombre n – taille du tableau (\(1 <= n <= 10^5\)). La deuxième ligne contient des nombres n &ndash ; éléments de tableau. Les nombres modulo ne dépassent pas \(10^9\). La troisième ligne contient le nombre q – nombre de requêtes (\(1 <= q <= 10^5\)). Suivi de q lignes, chacune dont contient 2 nombres : l et r (\(1 <= l <= r <= n\ )).

Sortie
Imprimez les réponses à toutes les requêtes, chacune sur une ligne distincte.
 

 

Exemples
5
1 2 3 4 5
3
1 2
3 3
2 5
# Entrée Sortie
1 3
3
14