Put Marbles in Bags - Problem
You have k bags. You are given a 0-indexed integer array weights where weights[i] is the weight of the ith marble. You are also given the integer k.
Divide the marbles into the k bags according to the following rules:
- No bag is empty.
- If the
ithmarble andjthmarble are in a bag, then all marbles with an index between theithandjthindices should also be in that same bag. - If a bag consists of all the marbles with an index from
itojinclusively, then the cost of the bag isweights[i] + weights[j].
The score after distributing the marbles is the sum of the costs of all the k bags.
Return the difference between the maximum and minimum scores among marble distributions.
Input & Output
Example 1 — Basic Case
$
Input:
weights = [1,3,5,1], k = 2
›
Output:
4
💡 Note:
Two bags needed. Min score: [1,3] + [5,1] = (1+3) + (5+1) = 10. Max score: [1] + [3,5,1] = (1+1) + (3+1) = 6. Difference = 10-6 = 4.
Example 2 — Three Bags
$
Input:
weights = [1,3], k = 2
›
Output:
0
💡 Note:
Only one way to split into 2 bags: [1] + [3]. Cost = (1+1) + (3+3) = 8. Since only one arrangement exists, difference is 0.
Example 3 — Larger Array
$
Input:
weights = [1,3,5,1,2], k = 3
›
Output:
7
💡 Note:
Need 3 bags. Different cuts create different total scores. The difference between maximum and minimum possible scores is 7.
Constraints
- 1 ≤ k ≤ weights.length ≤ 105
- 1 ≤ weights[i] ≤ 109
Visualization
Tap to expand
Understanding the Visualization
1
Input
Array of marble weights and k bags needed
2
Partition Rules
Contiguous subarrays, bag cost = first + last marble
3
Score Difference
Find max score - min score across all valid partitions
Key Takeaway
🎯 Key Insight: Focus on the k-1 cuts needed and sort their edge contributions to find optimal max/min partitions efficiently
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code