Temos um problema sobre como calcular rapidamente as somas no intervalo l...r em uma matriz estática a em menor que O(n) assintótica.
Vamos dividir o array a em k blocos do mesmo tamanho e primeiro calcular a soma dos elementos para cada um deles.
Agora, ao atender a solicitação, podemos passar pelos elementos do array a e adicioná-los ao resultado, também se um dos blocos estiver dentro do segmento, podemos adicionar sua soma ao resultado e pular o elementos deste bloco.
O número máximo de operações por consulta com este algoritmo é n / k + k, então o k ideal é igual à raiz quadrada de n.