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;
vector<int> find_subset(int l, int u, vector<int> w){
vector<pair<int, int>> ids;
for(int i = 0; i < (int)w.size(); ++i){
ids.push_back({w[i], i});
}
sort(ids.begin(), ids.end());
int n = (int)w.size();
vector<long long> pref(n);
pref[0] = ids[0].first;
for(int i = 1; i < n; ++i){
pref[i] = pref[i - 1] + ids[i].first;
}
auto sum = [&](int i, int j) -> long long{
return pref[j] - (i > 0 ? pref[i - 1] : 0);
};
for(int i = 0, j = 0; i < n; ++i){
while(j < n && sum(i, j) < l) ++j;
if(j == n) return {};
if(sum(i, j) <= u){
vector<int> res;
for(int k = i; k <= j; ++k){
res.push_back(ids[k].second);
}
return res;
}
}
return {};
}
#ifdef LOCAL
int main(){
vector<int> A = {6, 8, 8, 7};
vector<int> a = find_subset(15, 17, A);
for(int x : a) cout << x << ' '; cout << '\n';
vector<int> b = find_subset(14, 15, {5, 5, 6, 6});
for(int x : b) cout << x << ' '; cout << '\n';
vector<int> c = find_subset(10, 20, {15, 17, 16, 18});
for(int x : c) cout << x << ' '; cout << '\n';
}
#endif
# | 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... |