in this article, I will talk about Cumulative sum but first, let me talk about one of the most common problem in computer science if we have an array and we wanna calculate the summation

of a specific range in this array, you will think of nested loops that sound good.

but this solution is (o(n)^2) can we get a better solution ??

Yes, we can do that by using (cumulative sum). ok, what is that exactly?

The cumulative sum is a technic we use to get the summation of a specific range in an array in(o(1)).

by generating a new array each element in that array contain the summation of elements before that

element.

##
**ok, How we can write this code?**

**ZERO BASED**

```
int range(int s,int e,vector<int>&v){
if(s==0)
return v[e];
return v[e]-v[s-1];
}
int main()
{
vector<int>v={1,2,3,4,5,6};
vector<int>s(v.size(),0);
for(int i=0;i<v.size();i++){
s[i]+=(i==0)?v[i]:v[i]+s[i-1];
}
cout<<range(2,4,s);
return 0;
}
```

**ONE BASED**

```
int range(int s,int e,vector<int>&v){
return v[e]-v[s-1];
}
int main()
{//one based
vector<int>v={0,1,2,3,4,5,6};
vector<int>s(v.size(),0);
for(int i=1;i<v.size();i++){
s[i]+=v[i]+s[i-1];
}
cout<<range(2,4,s);
return 0;
}
```

## Top comments (0)