#include <iostream>
#include <climits> 

int maxSubArraySum(int* arr, int size) {
    int maxSoFar = INT_MIN;
    int maxEndingHere = 0;

    for (int i = 0; i < size; ++i) {
        maxEndingHere = maxEndingHere + arr[i];

        if (maxSoFar < maxEndingHere) {
            maxSoFar = maxEndingHere;
        }

        if (maxEndingHere < 0) {
            maxEndingHere = 0;
        }
    }

    return maxSoFar;
}

int main() {
    int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
    int size = sizeof(arr) / sizeof(arr[0]);

    int maxSum = maxSubArraySum(arr, size);

    std::cout << "Максимальная сумма подмассива: " << maxSum << std::endl;

    return 0;
}

