use List::Util 'max'; ... $sums[ $_ - $i ] += $_[ $_ ] for $i .. $n-1; push @max, max(@sums[0 .. $n-1-$i]);