Medium

Remove Stones to Minimize the TotalC++

Full explanation · Time O(n + klogn) · Space O(1)

// Time:  O(n + klogn)
// Space: O(1)

class Solution {
public:
    int minStoneSum(vector<int>& piles, int k) {
        make_heap(begin(piles), end(piles));
        while (--k >= 0) {
            int x = piles.front();
            pop_heap(begin(piles), end(piles)); piles.pop_back();
            piles.emplace_back((x + 1) / 2);
            push_heap(begin(piles), end(piles));
        }
        return accumulate(cbegin(piles), cend(piles), 0);
    }
};