이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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... |