Rust Max Double Slice Sum
fn max_double_slice_sum(a: &[i64]) -> i64 {
let size = a.len();
if size < 3 {
return 0;
}
let mut p1 = vec![0i64; size];
let mut p2 = vec![0i64; size];
for i in 2..size - 1 {
p1[i] = 0.max(p1[i - 1] + a[i - 1]);
p2[size - i - 1] = 0.max(p2[size - i] + a[size - i]);
}
let mut sum = p1[1] + p2[1];
for i in 1..size - 1 {
sum = sum.max(p1[i] + p2[i]);
}
sum
}
This keeps the best sum ending on the left and starting on the right, then combines them around each middle position.