| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1299585 | martin_011 | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 0 KiB |
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define vi vector<int>
#define vll vector<ll>
#define str string
#define vd void
#define vb vector<bool>
#define F first
#define S second
#define lbr '\n'
#define all(x) x.begin(), x.end()
const ll INF = 1E15;
vi find_subset(int l, int u, vi w) {
ll n = w.size();
vector<pair<ll, ll>> a(n, {0, 0});
for (int i=0; i<n; i++) a[i] = {w[i], i};
sort(a.begin(), a.end());
ll izq=0, der=0, s=a[0].F;
while (true) {
if (izq > der) der++;
if (u < s) {
s -= a[izq].F;
izq++;
} else if (s < l) {
der++;
if (der>=n) return {};
s += a[der].F;
}
if (l <= s && r <= r){
vi res;
for (; izq <= der; izq++) res.push_back(a[izq].S);
return res;
}
}
return {};
}
