Untitled

 avatar
unknown
plain_text
11 days ago
1.2 kB
2
Indexable
import java.util.PriorityQueue;

public class MinStoneSum {
    public int minStoneSum(int[] piles, int k) {
        // Max-heap for the piles (using negative values for max-heap behavior)
        PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);

        // Add all piles to the heap
        for (int pile : piles) {
            maxHeap.offer(pile);
        }

        // Perform k operations
        while (k-- > 0 && !maxHeap.isEmpty()) {
            int largest = maxHeap.poll();
            int reduced = largest - largest / 2;
            maxHeap.offer(reduced);
        }

        // Sum up the remaining stones
        int totalStones = 0;
        while (!maxHeap.isEmpty()) {
            totalStones += maxHeap.poll();
        }

        return totalStones;
    }

    public static void main(String[] args) {
        MinStoneSum solver = new MinStoneSum();

        int[] piles1 = {5, 4, 9};
        int k1 = 2;
        System.out.println(solver.minStoneSum(piles1, k1)); // Output: 12

        int[] piles2 = {4, 3, 6, 7};
        int k2 = 3;
        System.out.println(solver.minStoneSum(piles2, k2)); // Output: 12
    }
}
Leave a Comment