// 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 , 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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIAp7CiAgICAvLyBpbmRleCAgICAwICAgMSAgMiAgMyAgNAogICAgaW50IGJbNV0gPSB7NSwtMywtNSwxNSw1fTsKICAgIGludCBUPTA7CiAgICBpbnQgbj01OwogICAgaW50IHBydj0wOwoKICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgIHsKICAgICAgIC8vIHtCZXN0IGFuc3dlciB0aWxsIHByZXZpb3VzICsgY3VycmVudCBObyAsIGN1cnJlbnQgTm8gLCBzbyBpZiBib3RoIGFyZSBuZWdhdGl2ZSBjb25zaWRlciB0aGUgYW5zIGlzIHplcm8gfQogICAgICAgLy8gaT0wCiAgICAgICAgLy8gY3VycmVudCA9IG1heCgwKzUgLCA1ICwwKQogICAgICAgIC8vIHBydiA9IDUKICAgICAgICAvLyBUID0gbWF4KDAsNSkgPSA1CgogICAgICAgIC8vaT0xCiAgICAgICAgLy8gY3VycmVudCA9IG1heCg1KygtMykgLCAtMyAsIDApCiAgICAgICAgLy9wcnYgPSAyCiAgICAgICAgLy9UID0gbWF4KDUsMikgPSA1CgogICAgICAgIC8vaT0yCiAgICAgICAgLy9jdXJyZW50ID0gbWF4KDIrKC01KSAsIC01ICwgMCkgID0gbWF4KCAtMyAsIC01ICwgMCkgPSAwIC8vIGJlY296IGJvdGggLTMgYW5kIC01IHNvIHRoZSBhbnMgaXMgY29uc2lkZXIgYXMgemVybwogICAgICAgIC8vcHJ2ID0gMAogICAgICAgIC8vVCA9IG1heCg1LDApID0gNQoKICAgICAgICAvL2k9MwogICAgICAgIC8vY3VycmVudCA9IG1heCgwKzE1ICwgMTUgLCAwICkgPSBtYXgoMTUgLCAxNSAsIDApID0gMTUKICAgICAgICAvL3BydiA9IDE1ICAKICAgICAgICAvL1QgPSBtYXgoIDUsIDE1KSA9IDE1CgogICAgICAgIC8vaT00CiAgICAgICAgLy9jdXJyZW50ID0gbWF4KDE1KzUgLCA1ICwgMCApID0gKDIwICwgNSAsIDApID0gMjAKICAgICAgICAvL3BydiA9IDIwCiAgICAgICAgLy9UID0gbWF4KDE1LDIwKSA9IDIwCiAgICAgICAgaW50IGN1cnJlbnQgPSBtYXgoeyAgcHJ2K2JbaV0gICAsICAgYltpXSAgICwgIDAgIH0pOwogICAgICAgIHBydj1jdXJyZW50OwogICAgICAgIFQ9bWF4KFQsY3VycmVudCk7CiAgICB9CiAgICBjb3V0PDwiTWF4IHN1bSBvZiBzdWJhcnJheSBvZiB0aGUgd2hvbGUgYXJyYXk6ICI8PFQ7IC8vIDIwIHdpbGwgYmUgdGhlIGZpbmFsIGFuc3dlcgp9