Maximum Number of Alloys - Problem
Maximum Number of Alloys

You are the owner of a metalworking company that creates special alloys using various types of metals. Your company has access to k different machines, each with its own unique recipe for creating alloys.

Here's what you have:
n different types of metals available in the market
k machines, each requiring specific amounts of each metal type
• Initial stock[i] units of metal type i
• Each unit of metal type i costs cost[i] coins
• A budget limit for purchasing additional metals

For machine i to create one alloy, it needs exactly composition[i][j] units of metal type j. The key constraint is that all alloys must be created using the same machine.

Your goal is to determine the maximum number of alloys you can produce while staying within your budget. You'll need to choose which machine to use and potentially purchase additional metals to maximize production.

Input & Output

example_1.py — Basic Example
$ Input: n = 3, k = 2, budget = 15 composition = [[1,1,1],[1,1,1]] stock = [0,0,0] cost = [1,2,3]
Output: 2
💡 Note: Both machines have the same composition [1,1,1]. To make 2 alloys, we need 2 units of each metal. Cost = 2×1 + 2×2 + 2×3 = 12, which is within budget 15. We can't make 3 alloys as the cost would be 18 > 15.
example_2.py — Different Machines
$ Input: n = 3, k = 2, budget = 15 composition = [[1,1,1],[1,1,10]] stock = [0,0,0] cost = [1,2,3]
Output: 5
💡 Note: Machine 1: [1,1,1] costs 6 per alloy, can make 2 alloys (cost 12). Machine 2: [1,1,10] costs 33 per alloy, can't make any. Choose machine 1.
example_3.py — With Initial Stock
$ Input: n = 2, k = 3, budget = 10 composition = [[2,1],[1,2],[1,1]] stock = [1,1] cost = [1,1]
Output: 5
💡 Note: Machine 3 with composition [1,1] is most efficient. We have 1 unit of each metal. For 5 alloys we need 5 units each, so buy 4 more of each. Cost = 4×1 + 4×1 = 8 ≤ 10.

Constraints

  • 1 ≤ n, k ≤ 100
  • 0 ≤ budget ≤ 108
  • composition.length == k
  • composition[i].length == n
  • 1 ≤ composition[i][j] ≤ 100
  • stock.length == n
  • 0 ≤ stock[i] ≤ 108
  • cost.length == n
  • 1 ≤ cost[i] ≤ 100
  • All values are positive integers except stock which can be 0

Visualization

Tap to expand
Alloy Manufacturing OptimizationMachine 1[2, 1, 3]per alloyMachine 2[1, 2, 1]per alloyMachine 3[1, 1, 2]per alloyMetal AMetal BMetal CAvailable Materials:Binary Search Process1. Try mid = 50 alloys2. Calculate needed materials3. Check if cost ≤ budget4. Adjust search rangeBudget$10,000Max Alloys42
Understanding the Visualization
1
Choose Machine
Select one of k machines, each with different metal requirements
2
Calculate Needs
For X alloys, calculate total metals needed: composition[i][j] × X
3
Check Budget
Calculate cost to buy additional metals: (needed - stock) × cost
4
Binary Search
Use binary search to find maximum feasible alloys within budget
Key Takeaway
🎯 Key Insight: Binary search works because the cost function is monotonic - if you can afford X alloys, you can definitely afford any number ≤ X alloys with the same or smaller budget.
Asked in
Google 35 Meta 28 Amazon 22 Microsoft 18 Apple 15
43.5K Views
Medium Frequency
~25 min Avg. Time
1.9K 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