Escrito por Leonardo Paes
Conhecimento prévio necessário:
A ideia principal para resolvermos esse problema é que a soma de valores de um intervalo (subvetor) é a subtração de duas somas de prefixos do vetor original. Por exemplo: Dado o subvetor com índices de a
a sua soma é
, onde
é o vetor das somas de prefixos.
Ao fixarmos o , o final de um certo subvetor, basicamente queremos saber a quantidade de
tal que
e
, e isso é o mesmo que:
.
Para encontrarmos essa quantidade de para cada
, basta utilizarmos um
de frequências, que diz a quantidade de prefixos anteriores a
com soma congruente a um certo valor módulo
.
Confira o código abaixo para melhor entendimento: