이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
// from duckindog wth depression
#include<bits/stdc++.h>
using namespace std;
//#define LOCAL
#ifndef LOCAL
#include "molecules.h"
#endif // LOCAL
const int N = 5e5 + 10;;
vector<int> find_subset(int l, int u, vector<int> w) {
int n = w.size();
using pii = pair<int, int>;
vector<pii> d;
for (int i = 0; i < n; ++i) d.push_back({w[i], i});
sort(d.begin(), d.end());
deque<int> q;
long long sum = 0;
for (int i = 0; i < n; ++i) {
int x, j; tie(x, j) = d[i];
sum += x;
q.push_back(j);
if (sum >= l && sum <= u) break;
while (sum >= u) {
sum -= w[q.front()];
q.pop_front();
}
if (sum >= l && sum <= u) break;
}
if (sum < l) return {};
vector<int> answer;
while (q.size()) {
answer.push_back(q.back());
q.pop_back();
}
return answer;
}
#ifdef LOCAL
int32_t main() {
cin.tie(0)->sync_with_stdio(0);
if (fopen("duck.inp", "r")) {
freopen("duck.inp", "r", stdin);
freopen("duck.out", "w", stdout);
}
int l, u; cin >> l >> u;
int x;
vector<int> input;
while (cin >> x) input.push_back(x);
for (auto i : find_subset(l, u, input))
cout << i << ' ';
}
#endif // LOCAL
# | 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... |