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>
#pragma GCC optimize("Ofast")
#define x first
#define y second
#define ld long double
#define ll long long
using namespace std;
vector <int> find_subset(int l, int u, vector <int> w) {
int n = w.size();
vector <pair <int, int>> v;
vector <ll> s(n + 1);
vector <int> ans;
for(int i = 0; i < n; i++)
v.push_back({w[i], i});
sort(v.begin(), v.end());
for(int i = 0; i < n; i++)
s[i + 1] = s[i] + v[i].first;
for(int i = 1; i <= n; i++) {
int j = lower_bound(s.begin(), s.begin() + i, s[i] - u) - s.begin();
if(s[i] >= s[j] + l) {
for(int k = j; k < i; k++)
ans.push_back(v[k].second);
break;
}
}
return ans;
}
/*int main() {
ios_base :: sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, l, u, x;
vector <int> v;
cin >> n >> l >> u;
for(int i = 1; i <= n; i++)
cin >> x, v.push_back(x);
vector <int> ans = find_subset(l, u, v);
int sum = 0;
for(auto &i : ans)
sum += v[i];
if(sum == 0 || (l <= sum && sum <= u))
cout << "Accepted!";
else {
cout << "Wrong answer, sum = " << sum << " and subset is ";
for(auto &i : ans)
cout << i << " ";
}
return 0;
}*/
# | 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... |