# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1219615 | AMel0n | Detecting Molecules (IOI16_molecules) | C++20 | 56 ms | 12100 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#include "molecules.h"
vector<int> unsorted;
vector<int> ans(multiset<ll> &simga){
vector<int> v;
FOR(i, unsorted.size()) {
if (simga.find(unsorted[i]) != simga.end()){
simga.erase(simga.find(unsorted[i]));
v.push_back(i);
}
}
return v;
}
vector<int> find_subset(int l, int u, vector<int> W) {
unsorted = W;
sort(all(W));
ll sum = 0;
multiset<ll> res;
FOR(i, W.size()) {
if (sum + W[i] > u) {
if (res.empty()) return {};
for(ll j = i; j < W.size() && sum < l; j++) {
sum -= *res.begin();
res.erase(res.begin());
sum += W[j];
res.insert(W[j]);
}
if (l <= sum && sum <= u) return ans(res);
else return {};
} else if (l <= sum + W[i] && sum + W[i] <= u) {
sum += W[i];
res.insert(W[i]);
return ans(res);
} else {
sum += W[i];
res.insert(W[i]);
}
}
return {};
}
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... |