Here is my code :- //O(n) complexity
void largest_subarray(int* a, int n, int* sum, int *start_index, int*
end_index)
{
int maxX=0, maxY=0, maxsum=a[0];
int tmpX=0,tmpY=0,tmpsum=a[0];
int i;
for (i=1; i<n; i++)
{
if (tmpsum > 0 && a[i] > 0)
{
tmpY = i;
tmpsum += a[i];
}
else
{
tmpX = tmpY = i;
tmpsum = a[i];
}
if (tmpsum > maxsum)
{
maxsum = tmpsum;
maxX = tmpX;
maxY = tmpY;
}
}
*start_index = maxX;
*end_index = maxY;
*sum = maxsum;
}
