fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. struct Item {
  7. double weight, value;
  8. };
  9.  
  10. bool cmp(Item a, Item b) {
  11. return (a.value / a.weight) > (b.value / b.weight);
  12. }
  13.  
  14. int main() {
  15. int n;
  16. double W;
  17. cin >> n >> W;
  18.  
  19. vector<Item> items(n);
  20. for (int i = 0; i < n; i++) {
  21. cin >> items[i].weight >> items[i].value;
  22. }
  23.  
  24. sort(items.begin(), items.end(), cmp);
  25.  
  26. double total = 0.0;
  27. double remaining = W;
  28.  
  29. for (int i = 0; i < n; i++) {
  30. if (items[i].weight <= remaining) {
  31. total += items[i].value;
  32. remaining -= items[i].weight;
  33. } else {
  34. total += (items[i].value / items[i].weight) * remaining;
  35. break;
  36. }
  37. }
  38.  
  39. int hasil = (int)total;
  40.  
  41. string s = to_string(hasil);
  42. for (int i = 0; i < s.size(); i++) {
  43. cout << s[i];
  44. if (i < s.size() - 1) cout << " ";
  45. }
  46. cout << endl;
  47. }
  48.  
Success #stdin #stdout 0.01s 5276KB
stdin
5 10 4 7 8 10 10 5 7 12 8 20
stdout
2 3