class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int maxSum = INT_MIN, currentSum = 0;
        for( int i = 0; i < nums.size(); ++i ){
            maxSum = max( maxSum, currentSum+= nums[i] );
            currentSum = ( currentSum < 0 ) ? 0 : currentSum;
        }
        return maxSum;
    }
};