LeetCode-in-Java

3457. Eat Pizzas!

Medium

You are given an integer array pizzas of size n, where pizzas[i] represents the weight of the ith pizza. Every day, you eat exactly 4 pizzas. Due to your incredible metabolism, when you eat pizzas of weights W, X, Y, and Z, where W <= X <= Y <= Z, you gain the weight of only 1 pizza!

Find the maximum total weight you can gain by eating all pizzas optimally.

Note: It is guaranteed that n is a multiple of 4, and each pizza can be eaten only once.

Example 1:

Input: pizzas = [1,2,3,4,5,6,7,8]

Output: 14

Explanation:

The total weight gained after eating all the pizzas is 8 + 6 = 14.

Example 2:

Input: pizzas = [2,1,1,1,1,1,1,1]

Output: 3

Explanation:

The total weight gained after eating all the pizzas is 2 + 1 = 3.

Constraints:

Solution

import java.util.Arrays;

public class Solution {
    public long maxWeight(int[] pizzas) {
        int n = pizzas.length;
        int m = n / 4;
        int z = (m + 1) / 2;
        int y = m / 2;
        int j = 0;
        Arrays.sort(pizzas);
        long res = 0;
        for (int i = 0; i < z; ++i) {
            res += pizzas[n - 1 - j];
            j += 1;
        }
        for (int i = 0; i < y; ++i) {
            res += pizzas[n - 1 - j - 1];
            j += 2;
        }
        return res;
    }
}