fork download
  1. #include <iostream>
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. using ll = long long;
  5. #define fo(i,start,end) for(ll i=start;i<end;i++)
  6.  
  7. int Kadanes(vector<ll>&arr,ll start,ll end){
  8. int prevSum=0;
  9. int MaxSeen = -1e9;
  10. for(int i=start;i<=end;i++){
  11. int sum = max(prevSum+arr[i],arr[i]);
  12. prevSum = sum;
  13. MaxSeen = max(MaxSeen,sum);
  14. }
  15. return MaxSeen;
  16. }
  17.  
  18. int main() {
  19. // your code goes here
  20. vector<ll>arr = {-10,-5,2,4,-15,-20,1,2};
  21. ll n = arr.size();
  22. //we need to apply Kadane's 2 time and find it
  23. ll MaxSeen = -1e9;
  24. fo(i,0,n-1){
  25. ll result = Kadanes(arr,0,i) + Kadanes(arr,i+1,n-1); //inclusive of both starting and ending index
  26. MaxSeen = max(MaxSeen,result);
  27. }
  28. cout<<MaxSeen<<endl;
  29. return 0;
  30. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
9