# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
267064 | jairRS | Detecting Molecules (IOI16_molecules) | C++17 | 1095 ms | 516 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"
#include <set>
#include <map>
using namespace std;
map<int, string> states;
map<string, set<int>> values;
int gw[200000];
int wsize;
set<int> go(string state = "", int sum = 0)
{
if (state.size() == wsize)
{
states[sum] = state;
set<int> res = {sum};
return res;
}
set<int> res1 = go(state + "0", sum);
set<int> res2 = go(state + "1", sum + gw[state.size()]);
res1.insert(res2.begin(), res2.end());
return res1;
}
std::vector<int> find_subset(int l, int u, std::vector<int> w)
{
wsize = w.size();
for (int i = 0; i < w.size(); i++)
{
gw[i] = w[i];
}
set<int> possible = go();
int guess = *possible.lower_bound(l);
if (guess <= u)
{
vector<int> res;
string state = states[guess];
for (int i = 0; i < w.size(); i++)
{
if (state[i] == '1')
res.push_back(i);
}
return res;
}
else
{
return std::vector<int>(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... |