Problem · Array

Minimum Total Packaging Effort

HardAmazonFULLTIMEOA
See Amazon hiring insights

Amazon operates multiple fulfillment centers. Each center follows a special packaging rule.

You are given: An integer list packEffort of size m where packEffort[i] is the packaging effort required for the i-th item.

An integer list packageCount of size n where packageCount[i] indicates that at the i-th fulfillment center, if you pay to package at least packageCount[i] items, you get 2 extra items for free. The 2 bonus (free) items must each have a packaging effort less than or equal to the smallest effort among the paid items at that center.

You can use any fulfillment center once or not at all.

Goal:

Return the minimum total packaging effort required to package all m items using any number of fulfillment centers.

Constraints:

  • 1 ≤ n ≤ 10^5
  • 1 ≤ m ≤ 10^5
  • 0 ≤ packEffort[i] ≤ 10^4
  • Each item must be packaged exactly once

A super huge thank you to an incredible friend who so generously shared the valuable source! 🐳

Examples
01 · Example 1
packEffort = [50, 50, 30, 50, 20]
packageCount = [2, 3]
return = 120
Choose the fulfillment center with packageCount = 2. Pay for 2 items with cost 50 each → min = 50 Take 2 items for free with effort ≤ 50 → pick 30 and 50 Remaining item is 20 → pay for it Total effort: 50 + 50 + 20 = 120
Constraints
🥝
More Amazon problems
drafts saved locally
public int minTotalPackagingEffort(List<Integer> packEffort, List<Integer> packageCount) {
  // write your code here
}
packEffort[50, 50, 30, 50, 20]
packageCount[2, 3]
expected120
sign in to submit