| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1283575 | stanwaibbange | Detecting Molecules (IOI16_molecules) | C++20 | 1 ms | 348 KiB |
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
const int INF = 1'000'000'001;
std::vector<int> find_subset(int l, int u, std::vector<int> w)
{
int n = w.size();
sort(w.begin(), w.end());
vector<vector<bool>> dp(n + 1, vector<bool>(u + 1, false));
dp[0][0] = true;
for (int i{1}; i <= n; ++i)
{
for (int j{0}; j < u + 1; ++j)
{
if (j-w[i-1] >= 0) {
dp[i][j] = dp[i-1][j] || dp[i-1][j-w[i-1]];
}
else {
dp[i][j] = dp[i-1][j];
}
}
}
vector<int> out{};
int jj{-1};
for (int j{u}; j >= l; --j)
{
if (dp[n][j]) {
jj = j;
}
}
if (jj == -1) {
return std::vector<int>(0);
}
for (int i{n}; i > 0; --i)
{
if (jj-w[i-1] >= 0 && dp[i-1][jj-w[i-1]]) {
out.push_back(i-1);
jj -= w[i-1];
}
}
return out;
}
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... | ||||
