class Solution { public: int minStoneSum(vector<int>& piles, int k) { int index = piles.size() - 1; int current = index; int sum = 0; sort(piles.begin(), piles.end()); for (int i = k; i > 0; --i) { piles[current] -= piles[current] / 2; if (current != 0) --current; if (piles[current] < piles[index]) { current = index; sort(piles.begin(), piles.end()); } } for (int i = 0; i <= index; ++i) sum += piles[i]; return sum; } };