Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "molecules.h"
- #include <algorithm>
- #include <vector>
- #define PB push_back
- using namespace std;
- typedef long long ll;
- typedef vector < int > vi;
- vi W;
- bool cmp(int i,int j){
- return W[i] < W[j];
- }
- vi find_subset(int l, int u, vi w) {
- W = w;
- ll cur = 0, j = 0, n = w.size(); vi p;
- for(int i = 0;i < n;i++) p.PB(i);
- sort(p.begin(), p.end(), cmp);
- for(int i = 0;i < n;i++){
- while(cur < l && j < n){
- cur += (ll)w[p[j++]];
- }
- if(cur >= (ll)l && cur <= (ll)u){
- vi sol;
- for(int k = i;k < j;k++)
- sol.PB(p[k]);
- return sol;
- }
- cur -= (ll)w[p[i]];
- }
- return std::vector<int>(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement