Task

Given a sequence of integers, find a continuous subsequence which maximizes the sum of its elements, that is, the elements of no other single subsequence add up to a value larger than this one.



An empty subsequence is considered to have the sum of   0;   thus if all elements are negative, the result must be the empty sequence.




grsub(v)={
  my(mn=1,mx=#v,r=0,at,c);
  if(vecmax(v)<=0,return([1,0]));
  while(v[mn]<=0,mn++);
  while(v[mx]<=0,mx--);
  for(a=mn,mx,
    c=0;
    for(b=a,mx,
      c+=v[b];
      if(c>r,r=c;at=[a,b])
    )
  );
  at
};