int array[n];            // Assume this is already filled with
arbitrary <int>'s
int partial_sum[n];  // When fill_partial_sums() is called,
                            // partial_sum[i] =
array[0]+array[1]+...+array[i-1]

void fill_partial_sums()
{
    int i;

    partial_sum[0] = 0;

    for (i = 1 ; i < n ; i++)
    {
        partial_sum[i] = partial_sum[i-1] + array[n-1];
    }
}

int sum_from_i_to_j(int i, int j)
{
    return partial_sum[j] - partial_sum[i];
}

O(1) time complexity :-)
O(n) memory usage

Reply via email to