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 <bits/stdc++.h>
#include "molecules.h"
#define FOR(i, x, y) for (int i = x; i < y; i++)
using namespace std;
pair<long long, int> a[200001];
long long pref[200001]{0};
vector<int> find_subset(int l, int u, vector<int> w) {
int n = w.size();
FOR(i, 0, n) {
a[i].first = (long long)w[i];
a[i].second = i;
}
sort(a, a + n);
FOR(i, 0, n) pref[i + 1] = pref[i] + a[i].first;
vector<int> res;
int x = 1, y = n;
while (x <= y) {
int mid = (x + y) / 2;
bool too_big = false;
FOR(i, 0, n - mid + 1) {
long long sum = pref[i + mid] - pref[i];
if (sum >= l && sum <= u) {
FOR(j, i, i + mid) res.push_back(a[j].second);
return res;
} else if (sum > u) {
too_big = true;
break;
}
}
if (too_big) y = mid - 1;
else x = mid + 1;
}
return res;
}
# | 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... |