Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. #include "molecules.h"
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. #define PB push_back
  6.  
  7. using namespace std;
  8.  
  9. typedef long long ll;
  10. typedef vector < int > vi;
  11.  
  12. vi W;
  13.  
  14. bool cmp(int i,int j){
  15.     return W[i] < W[j];
  16. }
  17.  
  18. vi find_subset(int l, int u, vi w) {
  19.     W = w;
  20.     ll cur = 0, j = 0, n = w.size(); vi p;
  21.     for(int i = 0;i < n;i++) p.PB(i);
  22.     sort(p.begin(), p.end(), cmp);
  23.     for(int i = 0;i < n;i++){
  24.         while(cur < l && j < n){
  25.             cur += (ll)w[p[j++]];
  26.         }
  27.         if(cur >= (ll)l && cur <= (ll)u){
  28.             vi sol;
  29.             for(int k = i;k < j;k++)
  30.                 sol.PB(p[k]);
  31.             return sol;
  32.         }
  33.         cur -= (ll)w[p[i]];
  34.     }
  35.     return std::vector<int>(0);
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement