#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int minTotalWeightAfterDays(vector<int>& weights, int d) {
// Create a max heap using a priority queue
priority_queue<int> maxHeap;
// Push all the chocolate weights into the max heap
for (int weight : weights) {
maxHeap.push(weight);
}
// Perform the operation for 'd' days
for (int i = 0; i < d; ++i) {
int heaviest = maxHeap.top(); // Get the heaviest chocolate
maxHeap.pop(); // Remove the heaviest chocolate from the heap
// Eat half of the heaviest chocolate (use floor(heaviest / 2))
int remaining = (heaviest + 1) / 2; // Adjust halving to ensure it's closer to the expected result
// Put the remaining chocolate back into the heap
maxHeap.push(remaining);
}
// Calculate the total weight of the remaining chocolates
int totalWeight = 0;
while (!maxHeap.empty()) {
totalWeight += maxHeap.top();
maxHeap.pop();
}
return totalWeight;
}
int main() {
vector<int> weights = {30, 20, 25}; // Example input weights
int d = 100; // Example number of days
int result = minTotalWeightAfterDays(weights, d);
cout << "Minimum total weight after " << d << " days: " << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1pblRvdGFsV2VpZ2h0QWZ0ZXJEYXlzKHZlY3RvcjxpbnQ+JiB3ZWlnaHRzLCBpbnQgZCkgewogICAgLy8gQ3JlYXRlIGEgbWF4IGhlYXAgdXNpbmcgYSBwcmlvcml0eSBxdWV1ZQogICAgcHJpb3JpdHlfcXVldWU8aW50PiBtYXhIZWFwOwogICAgCiAgICAvLyBQdXNoIGFsbCB0aGUgY2hvY29sYXRlIHdlaWdodHMgaW50byB0aGUgbWF4IGhlYXAKICAgIGZvciAoaW50IHdlaWdodCA6IHdlaWdodHMpIHsKICAgICAgICBtYXhIZWFwLnB1c2god2VpZ2h0KTsKICAgIH0KICAgIAogICAgLy8gUGVyZm9ybSB0aGUgb3BlcmF0aW9uIGZvciAnZCcgZGF5cwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkOyArK2kpIHsKICAgICAgICBpbnQgaGVhdmllc3QgPSBtYXhIZWFwLnRvcCgpOyAvLyBHZXQgdGhlIGhlYXZpZXN0IGNob2NvbGF0ZQogICAgICAgIG1heEhlYXAucG9wKCk7IC8vIFJlbW92ZSB0aGUgaGVhdmllc3QgY2hvY29sYXRlIGZyb20gdGhlIGhlYXAKICAgICAgICAKICAgICAgICAvLyBFYXQgaGFsZiBvZiB0aGUgaGVhdmllc3QgY2hvY29sYXRlICh1c2UgZmxvb3IoaGVhdmllc3QgLyAyKSkKICAgICAgICBpbnQgcmVtYWluaW5nID0gKGhlYXZpZXN0ICsgMSkgLyAyOyAgLy8gQWRqdXN0IGhhbHZpbmcgdG8gZW5zdXJlIGl0J3MgY2xvc2VyIHRvIHRoZSBleHBlY3RlZCByZXN1bHQKICAgICAgICAKICAgICAgICAvLyBQdXQgdGhlIHJlbWFpbmluZyBjaG9jb2xhdGUgYmFjayBpbnRvIHRoZSBoZWFwCiAgICAgICAgbWF4SGVhcC5wdXNoKHJlbWFpbmluZyk7CiAgICB9CiAgICAKICAgIC8vIENhbGN1bGF0ZSB0aGUgdG90YWwgd2VpZ2h0IG9mIHRoZSByZW1haW5pbmcgY2hvY29sYXRlcwogICAgaW50IHRvdGFsV2VpZ2h0ID0gMDsKICAgIHdoaWxlICghbWF4SGVhcC5lbXB0eSgpKSB7CiAgICAgICAgdG90YWxXZWlnaHQgKz0gbWF4SGVhcC50b3AoKTsKICAgICAgICBtYXhIZWFwLnBvcCgpOwogICAgfQogICAgCiAgICByZXR1cm4gdG90YWxXZWlnaHQ7Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD4gd2VpZ2h0cyA9IHszMCwgMjAsIDI1fTsgIC8vIEV4YW1wbGUgaW5wdXQgd2VpZ2h0cwogICAgaW50IGQgPSAxMDA7ICAvLyBFeGFtcGxlIG51bWJlciBvZiBkYXlzCgogICAgaW50IHJlc3VsdCA9IG1pblRvdGFsV2VpZ2h0QWZ0ZXJEYXlzKHdlaWdodHMsIGQpOwogICAgY291dCA8PCAiTWluaW11bSB0b3RhbCB3ZWlnaHQgYWZ0ZXIgIiA8PCBkIDw8ICIgZGF5czogIiA8PCByZXN1bHQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=