Advertisement
Debashish_Saha

knapsack / greedy

Aug 6th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int weight[1000000],val[1000000];
  4. double uval[1000000];
  5. int main() {
  6.     int n,mx=20;
  7.     scanf("%d",&n);
  8.     for(int i=1; i<=n; i++)
  9.         scanf("%d %d",&weight[i],&val[i]);
  10.  
  11.     for(int i=1; i<=n; i++)
  12.         uval[i]=val[i]/(weight[i]*1.0);
  13.    
  14.  
  15.     for(int i=1; i<n; i++) {
  16.         for(int j=i+1; j<=n; j++) {
  17.             if(uval[i]<uval[j]) {
  18.                 swap(uval[i],uval[j]);
  19.                 swap(weight[i],weight[j]);
  20.             }
  21.         }
  22.     }
  23.  
  24.     double sum=0;
  25.     for(int i=1; i<n; i++) {
  26.         if(weight[i]<=mx) {
  27.             sum+=weight[i]*uval[i];
  28.             mx-=weight[i];
  29.         } else {
  30.             sum+=mx*uval[i];
  31.             break;
  32.         }
  33.     }
  34.     printf("%d\n",sum);
  35.     return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement