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>
using namespace std;
#define nl "\n"
#define nf endl
#define ll long long
#define pb push_back
#define _ << ' ' <<
#define INF (ll)1e18
#define mod 998244353
#define maxn 200010
ll i, i1, j, k, k1, t, n, m, res, flag[10], a[maxn], b;
ll l, u, ps[maxn], p[maxn], bsl, bsm, bsu;
vector<int> rs;
vector<array<ll, 2>> v;
ll rsq(ll l, ll r) {
if (l <= 0) return -INF;
if (r >= n + 1) return INF;
return (ps[r] - ps[l - 1]);
}
vector<int> find_subset(int _l, int _u, vector<int> w) {
n = w.size(); l = _l; u = _u;
for (i = 1; i <= n; i++) v.pb({w[i - 1], i});
sort(v.begin(), v.end());
for (i = 1; i <= n; i++) {
a[i] = v[i - 1][0]; p[i] = v[i - 1][1];
}
for (i = 1; i <= n; i++) ps[i] = ps[i - 1] + a[i];
for (i = 1; i <= n; i++) {
bsl = 0; bsu = n;
while (bsl != bsu) {
bsm = (bsl + bsu) / 2;
if (rsq(bsm, bsm + i - 1) >= l) bsu = bsm;
else bsl = bsm + 1;
}
k = rsq(bsl, bsl + i - 1);
if (k < l || k > u) continue;
for (j = bsl; j <= bsl + i - 1; j++) rs.pb(p[j] - 1);
return rs;
}
return rs;
}
# | 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... |