The imbalance across a split
A load balancer divides a batch at one index and wants the difference between the two halves.
- Sum the values strictly left of `at`, and the values from `at` onward inclusive.
- The answer is the left sum minus the right sum.
- A cut at or before the start takes all the weight as the right side: negate the whole sum.
- A cut at or past the end leaves everything on the left: just the whole sum.
split_imbalance(values: list<int>, at: int) → int
Where you start
def split_imbalance(values: list[int], at: int) -> int:
Worked examples
| Call | Result |
|---|---|
split_imbalance([1, 2, 3, 4], 2) | -4 |
split_imbalance([5, 3, 8], 1) | -6 |
split_imbalance([1, 2, 3], 0) | -6 |
split_imbalance([1, 2, 3], 3) | 6 |
Hint
Handle the out-of-range slices first, then sum each side and subtract.
Reference solution in Python
def split_imbalance(values: list[int], at: int) -> int:
total = sum(values)
if at <= 0:
return -total
if at >= len(values):
return total
left = sum(values[:at])
right = sum(values[at:])
return left - right