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 ll long long
vector<int> find_subset(int _l, int _r, vector<int> _w){
ll l = _l, r = _r;
vector<ll> w; int n = _w.size();
for(auto x : _w) w.push_back(x);
vector<int> id(w.size());
iota(id.begin(), id.end(), 0);
sort(id.begin(), id.end(), [&](int a, int b){return w[a]<w[b];});
ll lsum = 0, rsum = 0; vector<int> res;
for(int siz = 1; siz<=n; ++siz){
lsum += w[id[siz-1]];
rsum += w[id[n-siz]];
if(l<=lsum && lsum<=r){
for(int i = 0; i<siz; ++i)
res.push_back(id[i]);
return res;
}
if(l<=rsum && rsum<=r){
for(int i = 0; i<siz; ++i)
res.push_back(id[n-1-i]);
return res;
}
if(rsum<l || lsum>r) continue;
int gap = n-siz;
for(int i = siz-1; i>=0; --i){
lsum -= w[id[i]], lsum += w[id[i+gap]];
if(l<=lsum && lsum<=r){
for(int j = 0; j<i; ++j)
res.push_back(id[j]);
for(int j = i; j<siz; ++j)
res.push_back(id[j+gap]);
return res;
}
}
}
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... |