# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1235281 | yixuan19 | Detecting Molecules (IOI16_molecules) | C++20 | 39 ms | 7736 KiB |
#include "molecules.h"
#include <iostream>
#include <algorithm>
#include <queue>
#define ll long long
using namespace std;
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
vector<int> res;
vector<int> empty;
priority_queue<pair<ll,int> > seen;
vector<pair<int,int> >vals;
for (int i = 0; i < w.size(); ++i){
vals.push_back(make_pair(w[i],i));
}
sort(vals.rbegin(), vals.rend());
ll cnt = 0;
int i = 0;
while (i < w.size()){
while (cnt < l && i < w.size()){
//cout<<"added "<<vals[i].first<<vals[i].second<<endl;
cnt+=vals[i].first;
seen.push(make_pair(vals[i].first,vals[i].second));
i++;
}
while (cnt > u && !seen.empty()){
cnt -= (seen.top().first);
seen.pop();
}
if (cnt >= l && cnt <= u) break;
}
if (cnt < l || cnt > u) return empty;
while (!seen.empty()){
res.push_back(seen.top().second);
seen.pop();
}
return res;
}
Compilation message (stderr)
# | 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... |