




Sponsored
Sponsored
To maximize the like-time coefficient, we can sort the satisfaction levels in non-descending order and calculate the possible like-time coefficients by considering prefixes from the end of the sorted array. This allows us to selectively choose higher satisfaction dishes to maximize the total like-time coefficient.
Time Complexity: O(n log n) due to sorting.
Space Complexity: O(1) for using a constant amount of extra space.
1using System;
2
3class Program {
4    static int MaxSatisfaction(int[] satisfaction) {
5        Array.Sort(satisfaction);
6        int total = 0, sum = 0;
7        for (int i = satisfaction.Length - 1; i >= 0; i--) {
8            sum += satisfaction[i];
9            if (sum > 0) {
10                total += sum;
11            } else {
12                break;
13            }
14        }
15        return total;
16    }
17
18    static void Main() {
19        int[] satisfaction = {-1, -8, 0, 5, -9};
20        Console.WriteLine(MaxSatisfaction(satisfaction));
21    }
22}This C# implementation sorts the satisfaction array and processes it from end to start to sum up positive contributions only, maximizing the like-time coefficient.
An alternative approach involves using dynamic programming to maximize the like-time coefficient. We maintain a DP table where `dp[i]` represents the maximum like-time coefficient attainable using the first `i` dishes. This approach computes overlap coefficients dynamically using state transitions calculated for each dish considered.
Time Complexity: O(n^2)
Space Complexity: O(n)
1
This JavaScript approach uses dynamic programming. An array tracks maximum scores achievable and updates state based on including or excluding dishes from past planned courses.