class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int max_val = INT_MIN;
        int cur = 0;
        for (int i = 0; i < array.size(); ++i) {
            cur += array[i];
            max_val = max(max_val, cur);
            cur = cur < 0 ? 0 : cur;
        }
        return max_val;
    }
};