Open In App

C++ Program for Range sum queries without updates

Last Updated : 12 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given an array arr of integers of size n. We need to compute sum of elements from index i to index j. The queries consisting of i and j index values will be executed multiple times. Examples:

Input : arr[] = {1, 2, 3, 4, 5}
        i = 1, j = 3
        i = 2, j = 4
Output :  9
         12         

Input : arr[] = {1, 2, 3, 4, 5}
        i = 0, j = 4 
        i = 1, j = 2 
Output : 15
          5

CPP




// CPP program to find sum between two indexes
// when there is no update.
#include <bits/stdc++.h>
using namespace std;
 
void preCompute(int arr[], int n, int pre[])
{
 pre[0] = arr[0];
 for (int i = 1; i < n; i++)
  pre[i] = arr[i] + pre[i - 1];
}
 
// Returns sum of elements in arr[i..j]
// It is assumed that i <= j
int rangeSum(int i, int j, int pre[])
{
 if (i == 0)
  return pre[j];
 
 return pre[j] - pre[i - 1];
}
 
// Driver code
int main()
{
 int arr[] = { 1, 2, 3, 4, 5 };
 int n = sizeof(arr) / sizeof(arr[0]);
 
 int pre[n];
 preCompute(arr, n, pre);
 cout << rangeSum(1, 3, pre) << endl;
 cout << rangeSum(2, 4, pre) << endl;
 
 return 0;
}


Output:

9
12

Time Complexity: O(n), where n represents the size of the given array.
Auxiliary Space: O(n), where n represents the size of the given array.

Please refer complete article on Range sum queries without updates for more details!


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads