Advertisement
kiwser

0,1 Knapsack

Aug 7th, 2021
1,022
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.99 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef struct Item{
  5.     int value;
  6.     int weight;
  7. }Item;
  8.  
  9. bool cmp(Item a, Item b){
  10.     double r1 = (double)a.value/(double)a.weight;
  11.     double r2 = (double)b.value/(double)b.weight;
  12.     return r1>r2;
  13. }
  14.  
  15. int main()
  16. {
  17.     Item data[10];
  18.     int n, knapsack, profit = 0;
  19.  
  20.     scanf("%d", &n);
  21.     scanf("%d", &knapsack);
  22.  
  23.     for(int i = 0; i < n;i++){
  24.         scanf("%d", &data[i].value);
  25.         scanf("%d", &data[i].weight);
  26.     }
  27.  
  28.     sort(data, data+n, cmp);
  29.  
  30. //  for(int i = 0; i < n;i++){
  31. //        printf("%d ", data[i].value);
  32. //        printf("%d\n", data[i].weight);
  33. //    }
  34.     for(int i = 0; i < n; i++){
  35.         if(knapsack < data[i].weight){
  36.             knapsack-=data[i].weight;
  37.             profit+=data[i].value;
  38.         }
  39.         else{
  40.             profit = profit + knapsack*((double)data[i].value/(double)data[i].weight);
  41.             break;
  42.         }
  43.     }
  44.  
  45.     printf("Profit = %d\n", profit);
  46.  
  47. }
  48.  
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement