# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1270504 | SnowRaven52 | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
vector<int> find_subset(long long l, long long u, const vector<long long>& w) {
int n = w.size();
vector<pair<long long, int>> a;
for (int i = 0; i < n; i++) a.push_back({w[i], i});
sort(a.begin(), a.end());
vector<int> r;
long long s = 0;
int i = 0;
for (int j = 0; j < n; j++) {
s += a[j].first;
while (s > u && i <= j) { s -= a[i].first; i++; }
if (l <= s && s <= u) {
for (int k = i; k <= j; k++) r.push_back(a[k].second);
return r;
}
}
return r;
}
int main() {
// freopen("main.in", "r", stdin);
// freopen(".out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
long long l, u; cin >> n >> l >> u;
vector<long long> w(n);
for (int i = 0; i < n; i++) cin >> w[i];
auto r = find_subset(l, u, w);
for (int i = 0; i < (int)r.size(); i++) {
if (i) cout << ' ';
cout << r[i];
}
cout << endl;
}