You are given an array of integers `stones` where `stones[i]` is the weight of the `i`th stone.
We are playing a game with the stones. On each turn, we choose the heaviest two stones and smash them together. Suppose the heaviest two stones have weights `x` and `y` with `x <= y`. The result of this smash is:
- If `x == y`, both stones are destroyed.
- If `x != y`, the stone of weight `x` is destroyed, and the stone of weight `y` has new weight `y - x`.
At the end of the game, there is at most one stone left. Return the weight of the last remaining stone. If there are no stones left, return `0`.
### Constraints
- `1 <= stones.length <= 30`
- `1 <= stones[i] <= 1000`
### Input Format
A single line containing space-separated integers representing `stones`.
### Output Format
Print the weight of the last remaining stone, or 0 if none remain.
Sample Cases
Example 1Sample Case
Input: 2 7 4 1 8 1
Output: 1
Example 2Sample Case
Input: 1
Output: 1
Example 3Sample Case
Input: 2
Output: 2
Example 4Sample Case
Input: 2 7
Output: 5
Constraints
Runtime Limit: 2000 ms per test batch
Memory Limit: 256 MB
Standard I/O stream reading
Official submissions are evaluated against hidden test cases on the server to verify time & memory complexity.