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