#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; }