101 Logo
onenoughtone

Problem Statement

Reducing Dishes

A chef has collected data on the satisfaction level of his n dishes. Chef can cook any dish in 1 unit of time.

Like-time coefficient of a dish is defined as the time taken to cook that dish including previous dishes multiplied by its satisfaction level i.e. time[i] * satisfaction[i].

Return the maximum sum of like-time coefficient that the chef can obtain after dishes preparation.

Dishes can be prepared in any order and the chef can discard some dishes to get this maximum value.

Examples

Example 1:

Input: satisfaction = [-1, -8, 0, 5, -9]
Output: 14
Explanation: After Removing the second and last dish, the maximum total like-time coefficient will be equal to (-1 * 1) + (0 * 2) + (5 * 3) = -1 + 0 + 15 = 14. Each dish is prepared in one unit of time.

Example 2:

Input: satisfaction = [4, 3, 2]
Output: 20
Explanation: Dishes can be prepared in any order, (2 * 1) + (3 * 2) + (4 * 3) = 2 + 6 + 12 = 20.

Example 3:

Input: satisfaction = [-1, -4, -5]
Output: 0
Explanation: Dishes can be prepared in any order. Since all dishes have negative satisfaction values, it is optimal to not prepare any dish and the maximum like-time coefficient is 0.

Constraints

  • n == satisfaction.length
  • 1 <= n <= 500
  • -1000 <= satisfaction[i] <= 1000

Problem Breakdown

To solve this problem, we need to:

  1. The key insight is to sort the satisfaction levels in ascending order.
  2. After sorting, we can decide whether to include each dish from the end (highest satisfaction) to the beginning (lowest satisfaction).
  3. For each dish, we need to decide whether including it will increase the total like-time coefficient.
  4. If a dish has a negative satisfaction level, it might still be worth including if it allows us to increase the time coefficient of dishes with higher satisfaction levels.
ProblemSolutionCode
101 Logo
onenoughtone