| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1283579 | Johann | Detecting Molecules (IOI16_molecules) | C++20 | 36 ms | 6172 KiB |
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
typedef vector<bool> vb;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef vector<vpii> vvpii;
typedef vector<vi> vvi;
typedef tuple<int, int, int> tiii;
typedef vector<tiii> vtiii;
#define sz(x) ((int)(x).size())
#define all(x) begin(x), end(x)
std::vector<int> find_subset(int l, int u, std::vector<int> w)
{
vpii W;
int n = sz(w);
for (int i = 0; i < n; ++i)
{
if (w[i] > u)
continue;
if (w[i] >= l)
{
return {i};
}
W.push_back(make_pair(w[i], i));
}
sort(all(W));
n = sz(W);
int idxl = 0, idxr = n - 1; // both indeces are exclusive
ll sum = 0;
while (sum < l && idxl < n)
sum += W[idxl++].first;
bool cont = true;
while (cont)
{
cont = false;
if (sum < l)
{
if (idxr >= idxl)
sum += W[idxr--].first,
cont = true;
}
else if (sum > u)
{
if (idxl > 0)
sum -= W[--idxl].first,
cont = true;
}
else
{
vector<int> ans;
for (int i = 0; i < idxl; ++i)
ans.push_back(W[i].second);
for (int i = n - 1; i > idxr; --i)
ans.push_back(W[i].second);
return ans;
}
}
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... | ||||
