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.  
  12. int totalcost = 0;
  13. while(minHeap.size() > 1)
  14. {
  15. int first = minHeap.top();
  16. minHeap.pop();
  17. int second = minHeap.top();
  18. minHeap.pop();
  19.  
  20. int mergecost = first+second;
  21. totalcost = totalcost + mergecost;
  22.  
  23. minHeap.push(mergecost);
  24. }
  25. cout<<minHeap.top()<<endl;
  26. return totalcost;
  27. }
  28.  
  29. int main()
  30. {
  31. vector<int>files={10, 20, 30, 5, 30};
  32.  
  33. int cost = optimalmerge(files);
  34.  
  35. cout<<"Minimum Cost: "<<cost<<endl;
  36. }
  37.  
Success #stdin #stdout 0.01s 5312KB
stdin
Standard input is empty
stdout
95
Minimum Cost: 205