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... |