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