This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "molecules.h"
#include <bits/stdc++.h>
#define pb push_back
#define all(a) a.begin(), a.end()
#define sz(a) (int)a.size()
#define x first
#define y second
#define debug(...) cout << "[" << #__VA_ARGS__ << ": " << __VA_ARGS__ << "]\n"
#define rd() abs((int)rng())
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int>pii;
const int maxn = 1e5 + 100;
const int mod = 1e9 + 7;
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
vector<int>find_subset(int l, int r, vector<int>a)
{
	vector<pii>v;
	int n = sz(a);
	for(int i = 0; i < n; i++)
		v.pb({a[i], i});
	sort(all(v));
	vector<ll>pref(n, 0), suf(n, 0);
	pref[0] = v[0].x;
	suf[n - 1] = v.back().x;
	for(int i = 1; i < n; i++)
		pref[i] = pref[i - 1] + v[i].x;
	for(int i = n - 2; i >= 0; i--)
		suf[i] = suf[i + 1] + v[i].x;
	for(int siz = 1; siz <= n; siz++)
	{
		if(pref[siz - 1] <= r && suf[n - siz] >= l)
		{
			ll sum = 0;
			for(int i = 0; i < n; i++)
			{
				sum += v[i].x;
				if(i >= siz)
					sum -= v[i - siz].x;
				if(i >= siz - 1 && sum >= l && sum <= r)
				{
					vector<int>ans;
					for(int j = i - siz + 1; j <= i; j++)
						ans.pb(v[j].y);
					return ans;
				}
			}
		}
	}
	return {};
}
| # | 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... |