Bash Max Double Slice Sum
max_double_slice_sum() {
local -n _arr="$1"
local _size=${#_arr[@]}
if (( _size < 3 )); then
echo 0
return
fi
local -a _p1 _p2
_p1[1]=0
_p2[_size-2]=0
local _i
for ((_i = 2; _i < _size - 1; _i++)); do
local _left=$(( _p1[_i-1] + _arr[_i-1] ))
(( _left < 0 )) && _left=0
_p1[_i]=$_left
local _right=$(( _p2[_size-_i] + _arr[_size-_i] ))
(( _right < 0 )) && _right=0
_p2[_size-_i-1]=$_right
done
local _sum=$(( _p1[1] + _p2[1] ))
for ((_i = 1; _i < _size - 1; _i++)); do
local _cand=$(( _p1[_i] + _p2[_i] ))
if (( _cand > _sum )); then _sum=$_cand; fi
done
echo "$_sum"
}
This keeps the best sum ending on the left and starting on the right, then combines them around each middle position.