wrapping/non wrapping kadanes

 #include <iostream>

#include <bits/stdc++.h>

#include <climits>


using namespace std;




void display(int *arr, int n){


    for(int i=0;i<n;i++){


        cout<<arr[i];


    }


}



int kadone(int *arr,int n){

    int maxsum=INT_MIN;

    int sum=0;

    for(int i=0;i<n;i++){

        sum=sum+arr[i];

        if(sum<0){

            

            sum=0;

        }

        maxsum=max(sum,maxsum);

        

    }

    return maxsum;

}



int main() {

    int arr[]={-4,4,-6,6,10,-11,12};

    int n=sizeof(arr)/sizeof(int);

    int maxsum=INT_MIN;

    int sum=0;

    //int arr_sum[n];

    int normal_sum=kadone(arr,n);

    cout<<normal_sum<<endl;

    int comp_arr[n];

    for(int i=0;i<n;i++){

        comp_arr[i]=-arr[i];

    }

    int wrap_sum=kadone(comp_arr,n);

    cout<<wrap_sum<<endl;

    //int total_sum=normal_sum-wrap_sum;

    for(int i=0;i<n;i++){

        sum+=arr[i];

        

    }

    cout<<sum<<endl;

    int total_sum=sum-(-wrap_sum);

    cout<<max(normal_sum,total_sum)<<endl;

    



    return 0;


}

Comments

Popular posts from this blog

Sum of Even Numbers till N

Find the Runner-Up Score!

Print All Substrings