| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1287572 | vincentbucourt1 | Detecting Molecules (IOI16_molecules) | C++20 | 32 ms | 4636 KiB |
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
int N;
vector<pair<int,int>> molecules; //{val, idx}
int wOn = 0;
vector<int> ans;
std::vector<int> find_subset(int wMin, int wMax, std::vector<int> w) {
N = (int)w.size();
molecules.resize(N);
for (int i = 0; i < N; i++) {
molecules[i] = pair<int,int>{w[i], i};
}
sort(molecules.begin(), molecules.end());
int lastUsed = N;
for (int i = N-1; i >= 0 && wOn < wMin; i--) {
wOn += molecules[i].first;
ans.emplace_back(molecules[i].second);
lastUsed = i;
}
if (wMin <= wOn && wOn <= wMax) return ans;
for (int i = 0; i < min(lastUsed, (int)ans.size()) && wMax < wOn; i++) {
wOn -= molecules[N-i-1].first;
wOn += molecules[i].first;
ans[i] = molecules[i].second;
}
if (wMin <= wOn && wOn <= wMax) return ans;
return vector<int>{};
}
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... | ||||
