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 ith marble and jth marble are in a bag, then all marbles with an index between the ith and jth indices should also be in that same bag.
  • If a bag consists of all the marbles with an index from i to j inclusively, then the cost of the bag is weights[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
Put Marbles in Bags ProblemInput: weights=[1,3,5,1], k=21351Option 1: [1,3] + [5,1]1351Cost: (1+3) + (5+1) = 10Option 2: [1] + [3,5,1]1351Cost: (1+1) + (3+1) = 6Max Score - Min Score10 - 6 = 4
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
Asked in
Google 15 Amazon 12 Microsoft 8
28.5K Views
Medium Frequency
~35 min Avg. Time
847 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen