max circular subarray sum gfg practice

Max Circular Subarray Sum in C++

#include <iostream>
#include <climits>
using namespace std;

int kadane(int arr[], int n) {
    int max_sum = INT_MIN, sum = 0;
    for (int i = 0; i < n; i++) {
        sum += arr[i];
        if (sum < arr[i]) {
            sum = arr[i];
        }
        if (sum > max_sum) {
            max_sum = sum;
        }
    }
    return max_sum;
}

int maxCircularSum(int arr[], int n) {
    int max_kadane = kadane(arr, n);
    if (max_kadane < 0) {
        return max_kadane;
    }
    int max_wrap = 0;
    for (int i = 0; i < n; i++) {
        max_wrap += arr[i];
        arr[i] = -arr[i];
    }
    max_wrap = max_wrap + kadane(arr, n);
    return (max_wrap > max_kadane) ? max_wrap : max_kadane;
}

int main() {
    int arr[] = {11, 10, -20, 5, -3, -5, 8, -13, 10};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Maximum circular subarray sum is " << maxCircularSum(arr, n) << endl;
    return 0;
}

This code includes the necessary header files and defines functions to calculate the maximum circular subarray sum using the Kadane's algorithm. The kadane function computes the maximum sum of a subarray within a given array. The maxCircularSum function utilizes the kadane function to find the maximum circular subarray sum. Finally, the main function initializes an array, calculates the maximum circular subarray sum, and outputs the result.