#include <iostream>
#include <vector>

using namespace std;

vector<int> find_max_seq_subarray(int * input, int len)
{
  int cur_sum = 0;
  int s = INT_MIN;
  int e = INT_MIN;
  int max = INT_MIN;
  vector <int> result;

  for (int i = 0; i < len; i++)
  {
    if (s == INT_MIN)
    {
      s = e = i;
      max = cur_sum = input[i];
      continue;
    }

    cur_sum += input[i];
    if (cur_sum <=0)
    {
      s = INT_MIN;
      e = INT_MIN;
    } else if (cur_sum > max)
    {
      e = i;
      max = cur_sum;
    }
  }
  result.push_back(s);
  result.push_back(e);
  result.push_back(max);

  return result;
}
int main()
{
  int input[8] = {1,-2,3,10,-4,7,2,-5};
  vector<int> found = find_max_seq_subarray(input, 8);

  if (found.size() == 3)
    cout<<"Max subarray: start index = "<<found[0] << ", end index = "<< found[1] <<" sum = " <<found[2]<<endl;
  return 1;
}