#include "molecules.h"
#include<vector>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
#define int long long
#define all(x) x.begin(),x.end()
#define pii pair<int,int>
#define pb push_back
#define f first
#define s second
vector<int32_t> find_subset(int32_t l, int32_t u, vector<int32_t> w){
vector<pii>have;
int sum=0;
for(int i=0;i<w.size();i++)have.pb({w[i],i});
sort(all(have));
int i=0;
vector<int32_t>ans;
vector<int>on(w.size(),0);
priority_queue<pii,vector<pii>,greater<pii>>pq;
for(;i<have.size();i++){
if(sum+have[i].f>l){
if(sum+have[i].f<=u){
ans.pb(have[i].s);
return ans;
}
break;
}
sum+=have[i].f;
ans.pb(have[i].s);
pq.push({have[i].f,have[i].s});
on[have[i].s]=1;
}
if(sum==l)return ans;
ans.clear();
if(i==0)return ans;
while(i<have.size()&&sum<l){
while(!pq.empty()&&!on[pq.top().s])pq.pop();
sum+=(have[i].f-pq.top().f);
on[pq.top().s]=0;
on[have[i].s]=1;
pq.push({have[i].f,have[i].s});
pq.pop();
i++;
}
if(sum<l)return ans;
while(!pq.empty())ans.pb(pq.top().s),pq.pop();
sort(all(ans));
return ans;
}
Compilation message (stderr)
molecules.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |