fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int optimalmerge(vector <int>files)
  5. {
  6. priority_queue<int , vector<int>,greater<int>> minHeap;
  7. for(int i =0; i< files.size();i++)
  8. {
  9. minHeap.push(files[i]);
  10. }
  11. int totalcost = 0;
  12. while(minHeap.size()>1)
  13. {
  14. int first = minHeap.top();
  15. minHeap.pop();
  16. int second = minHeap.top();
  17. minHeap.pop();
  18. int mergedcost = first + second;
  19. totalcost+=mergedcost;
  20. minHeap.push(mergedcost);
  21. }
  22. return totalcost;
  23. }
  24.  
  25. int main()
  26. {
  27. vector<int>files = {20,30,10,5,30};
  28. int cost = optimalmerge(files);
  29.  
  30. cout <<"Minimum cost = " << cost << endl;
  31.  
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Minimum cost = 205