fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. bool comp(pair<long,long>p1,pair<long,long>p2){
  5. if(p1.second > p2.second){
  6. return 1;
  7. }
  8. else if(p1.second == p2.second){
  9. if(p1.first < p2.first){
  10. return 1;
  11. }else{
  12. return 0;
  13. }
  14. }
  15. return 0;
  16. }
  17.  
  18. long solve(vector<long>boxes,vector<long>unitsPerBox, int truckSize){
  19. vector<pair<long,long>>v;
  20. for(int i=0;i<boxes.size();i++){
  21. v.push_back({boxes[i],unitsPerBox[i]});
  22. }
  23. sort(v.begin(),v.end(),comp);
  24. int n = unitsPerBox.size();
  25. long ans =0;
  26.  
  27.  
  28.  
  29. for(int i=0;i<n;i++){
  30. if(truckSize >= v[i].first ){
  31. ans += v[i].second * v[i].first;
  32. truckSize -= v[i].first;
  33. }
  34. else if(truckSize < v[i].first && truckSize!=0){
  35. ans += truckSize*v[i].second;
  36. truckSize =0;
  37. break;
  38. }
  39. }
  40. return ans;
  41. }
  42.  
  43. int main() {
  44. vector<long>boxes {1,6,3};
  45. vector<long>unit {7,4,2};
  46. cout<<solve(boxes,unit,6);
  47. return 0;
  48. }
Success #stdin #stdout 0s 5420KB
stdin
Standard input is empty
stdout
27