# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
784941 | Boas | Detecting Molecules (IOI16_molecules) | C++17 | 4 ms | 8492 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "molecules.h"
using namespace std;
#include <bits/stdc++.h>
#define MAX_N 200001
typedef vector<int> vi;
vi find_subset(int l, int u, vi w)
{
unordered_map<int, int> lastAddition;
unordered_multimap<int, bitset<MAX_N>> possible = {{0, {}}};
for (int inx = 0; inx < w.size(); inx++)
{
int i = w[inx];
for (const auto &[p, used] : possible)
{
if (used[inx])
continue;
int n = i + p;
if (n > u)
continue;
lastAddition[n] = inx;
if (n >= l && n <= u)
{
vi solution = {inx};
int weightRemaining = p;
while (weightRemaining > 0)
{
solution.push_back(lastAddition[weightRemaining]);
weightRemaining -= w[lastAddition[weightRemaining]];
}
return solution;
}
bitset<MAX_N> newUsed(used);
newUsed[inx] = true;
possible.insert({n, newUsed});
}
}
return vi(0);
}
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... |