// Kadane Algorithm
#include <bits/stdc++.h>
using namespace std;
int main()
{
// index 0 1 2 3 4
int b[5] = {5,-3,-5,15,5};
int T=0;
int n=5;
int prv=0;
for(int i=0; i<n; i++)
{
// {Best answer till previous , current No , so if both are negative consider the ans is zero }
// i=0
// current = max(0+5 , 5 ,0)
// prv = 5
// T = max(0,5) = 5
//i=1
// current = max(5+(-3) , -3 , 0)
//prv = 2
//T = max(5,2) = 5
//i=2
//current = max(2+(-5) , -5 , 0) = max( -3 , -5 , 0) = 0 // becoz both -3 and -5 so the ans is consider as zero
//prv = 0
//T = max(5,0) = 5
//i=3
//current = max(0+15 , 15 , 0 ) = max(15 , 15 , 0) = 15
//prv = 15
//T = max( 5, 15) = 15
//i=4
//current = max(15+5 , 5 , 0 ) = (20 , 5 , 0) = 20
//prv = 20
//T = max(15,20) = 20
int current = max({ prv+b[i] , b[i] , 0 });
prv=current;
T=max(T,current);
}
cout<<"Max sum of subarray of the whole array: "<<T; // 20 will be the final answer
}
Ly8gS2FkYW5lIEFsZ29yaXRobQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIAp7CiAgICAvLyBpbmRleCAgICAwICAgMSAgMiAgMyAgNAogICAgaW50IGJbNV0gPSB7NSwtMywtNSwxNSw1fTsKICAgIGludCBUPTA7CiAgICBpbnQgbj01OwogICAgaW50IHBydj0wOwoKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgIC8vIHtCZXN0IGFuc3dlciB0aWxsIHByZXZpb3VzICwgY3VycmVudCBObyAsIHNvIGlmIGJvdGggYXJlIG5lZ2F0aXZlIGNvbnNpZGVyIHRoZSBhbnMgaXMgemVybyB9CiAgICAgICAvLyBpPTAKICAgICAgICAvLyBjdXJyZW50ID0gbWF4KDArNSAsIDUgLDApCiAgICAgICAgLy8gcHJ2ID0gNQogICAgICAgIC8vIFQgPSBtYXgoMCw1KSA9IDUKCiAgICAgICAgLy9pPTEKICAgICAgICAvLyBjdXJyZW50ID0gbWF4KDUrKC0zKSAsIC0zICwgMCkKICAgICAgICAvL3BydiA9IDIKICAgICAgICAvL1QgPSBtYXgoNSwyKSA9IDUKCiAgICAgICAgLy9pPTIKICAgICAgICAvL2N1cnJlbnQgPSBtYXgoMisoLTUpICwgLTUgLCAwKSAgPSBtYXgoIC0zICwgLTUgLCAwKSA9IDAgLy8gYmVjb3ogYm90aCAtMyBhbmQgLTUgc28gdGhlIGFucyBpcyBjb25zaWRlciBhcyB6ZXJvCiAgICAgICAgLy9wcnYgPSAwCiAgICAgICAgLy9UID0gbWF4KDUsMCkgPSA1CgogICAgICAgIC8vaT0zCiAgICAgICAgLy9jdXJyZW50ID0gbWF4KDArMTUgLCAxNSAsIDAgKSA9IG1heCgxNSAsIDE1ICwgMCkgPSAxNQogICAgICAgIC8vcHJ2ID0gMTUgIAogICAgICAgIC8vVCA9IG1heCggNSwgMTUpID0gMTUKCiAgICAgICAgLy9pPTQKICAgICAgICAvL2N1cnJlbnQgPSBtYXgoMTUrNSAsIDUgLCAwICkgPSAoMjAgLCA1ICwgMCkgPSAyMAogICAgICAgIC8vcHJ2ID0gMjAKICAgICAgICAvL1QgPSBtYXgoMTUsMjApID0gMjAKICAgICAgICBpbnQgY3VycmVudCA9IG1heCh7ICBwcnYrYltpXSAgICwgICBiW2ldICAgLCAgMCAgfSk7CiAgICAgICAgcHJ2PWN1cnJlbnQ7CiAgICAgICAgVD1tYXgoVCxjdXJyZW50KTsKICAgIH0KICAgIGNvdXQ8PCJNYXggc3VtIG9mIHN1YmFycmF5IG9mIHRoZSB3aG9sZSBhcnJheTogIjw8VDsgLy8gMjAgd2lsbCBiZSB0aGUgZmluYWwgYW5zd2VyCn0=