#include <algorithm>

class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int max = INT32_MIN;
        int cur = max;
        for (const auto& val : array)
        {
            cur = std::max(val, cur + val);
            max = std::max(max, cur);
        }
        return max;
    }
};