#include <bits/stdc++.h>
using namespace std;
int getSum(vector<int>arr,int n){
vector<int>dp(n,0);
dp[0]=arr[0];
dp[1]=dp[0]+arr[1];
dp[2]=max(dp[0]+arr[2],dp[1]+arr[2]);
for(int i=3;i<n;i++){
dp[i]=max({dp[i-1]+arr[i],dp[i-2]+arr[i],dp[i-3]+arr[i]}); //as we can make 1 or 2 jumps back and current element must be included
}
return dp[n-1];
}
int main() {
// your code goes here
vector<int>arr={1,2,-1,3,4};
int n=arr.size();
cout<<"The maximum sum of all elements by performing required 1,2 or 3 jumps is:"<<getSum(arr,n);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBnZXRTdW0odmVjdG9yPGludD5hcnIsaW50IG4pewoJdmVjdG9yPGludD5kcChuLDApOwoJZHBbMF09YXJyWzBdOwoJZHBbMV09ZHBbMF0rYXJyWzFdOwoJZHBbMl09bWF4KGRwWzBdK2FyclsyXSxkcFsxXSthcnJbMl0pOwoJZm9yKGludCBpPTM7aTxuO2krKyl7CgkJZHBbaV09bWF4KHtkcFtpLTFdK2FycltpXSxkcFtpLTJdK2FycltpXSxkcFtpLTNdK2FycltpXX0pOyAgLy9hcyB3ZSBjYW4gbWFrZSAxIG9yIDIganVtcHMgYmFjayBhbmQgY3VycmVudCBlbGVtZW50IG11c3QgYmUgaW5jbHVkZWQKCX0KCXJldHVybiBkcFtuLTFdOwp9CiAKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgl2ZWN0b3I8aW50PmFycj17MSwyLC0xLDMsNH07CglpbnQgbj1hcnIuc2l6ZSgpOwoJY291dDw8IlRoZSBtYXhpbXVtIHN1bSBvZiBhbGwgZWxlbWVudHMgYnkgcGVyZm9ybWluZyByZXF1aXJlZCAxLDIgb3IgMyBqdW1wcyBpczoiPDxnZXRTdW0oYXJyLG4pOwoJcmV0dXJuIDA7Cn0=