# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1187033 | GoBananas69 | Detecting Molecules (IOI16_molecules) | C++20 | 1095 ms | 1092 KiB |
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
vector<int> find_subset(int l, int u, vector<int> w) {
int n = (int)w.size();
if (n == 0) return {};
int sum = 0;
for (int &i : w) sum += i;
vector<bool> dp(sum + 1, false);
vector<int> prev(sum + 1, -1);
dp[0] = true;
for (int i = 0; i < n; ++i) {
int wi = w[i];
for (int j = sum; j >= wi; --j) {
if (!dp[j] && dp[j - wi]) {
dp[j] = true;
prev[j] = i;
}
}
}
for (int s = l; s <= u && s <= sum; ++s) {
if (dp[s]) {
vector<int> res;
int curr = s;
while (curr > 0) {
int i = prev[curr];
res.push_back(i);
curr -= w[i];
}
return res;
}
}
return {};
}
// signed main() {
// cin.tie(0)->sync_with_stdio(0);
// vector<int> res = find_subset(15, 17, {8, 7});
// for (int &i: res) {
// cout << i << ' ';
// }
// }
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... |