#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)
molecules.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~| # | 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... |