Find out the maximum sub-array of non negative numbers from an array. The sub-array should be continuous. That is, a sub-array created by choosing the second and fourth element and skipping the third element is invalid.
Maximum sub-array is defined in terms of the sum of the elements in the sub-array. Sub-array A is greater than sub-array B if sum(A) > sum(B).
This is my solution:
vector<int> Solution::maxset(vector<int> &A) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
    vector <int> bla;
    int sum[100]={0};
    int k = 0;
    int j = 1;
    for (int i =0; i < A.size(); i++){
        if (A[i] > -1){
            sum[k] = A[i] + sum[k];
        }
        else {
            k++;
        }
    } 
    cout<<sum[0]<<" ";
    cout<<sum[1]<<" ";
    cout << sum[2] << " ";
    int s = 0;
    for (int i =0; i< 100; i++){
        if (s < sum[i]){
            s = sum[i];
            k = i;
        }
    }
    cout << s;
    int count = 0;
    for (int i =0; i < A.size(); i++){
        if (A[i] < 0) {
            count ++;
        }
        if (count == k) {
            int j = i+1;
            int x = 0;
            while (A[j] > 0 && j< (A.size()-1)) {
                //  bla[x] = A[j];
                x++;
                j++;
            }
        }
    } 
    return bla;
}
If I uncomment the line bla[x] = A[j], I get segmentation error. Can someone explain how to undetstand this error? I read it somewhere that there is not enough space in stack. I do not understand how. Thank you
 
    