| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1284685 | Rares | Detecting Molecules (IOI16_molecules) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("date.in");
ofstream fout ("date.out");
#define cin fin
#define cout fout
vector <int> rez,a;
int s,n;
vector <pair <int,int>> p;
vector <int> find_subset (int l, int r, vector <int> v){
n=v.size ();
for (int i=0;i<n;++i){
p.push_back ({v[i],i});
}
sort (p.begin (),p.end ());
sort (v.begin (),v.end ());
for (int i=n-1;i>=0;--i){
if (s+v[i]>=l and s+v[i]<=r){
a.push_back (p[i].second);
s+=v[i];
break;
}
if (s+v[i]+v[0]>r) continue;
a.push_back (p[i].second);
s+=v[i];
}
if (s>=l and s<=r) return a;
a.clear ();
s=0;
for (int i=0;i<n;++i){
if (s+v[i]>=l and s+v[i]<=r){
a.push_back (p[i].second);
s+=v[i];
break;
}
if (i==n-1) continue;
if (s+v[i]+v[i+1]>r) continue;
a.push_back (p[i].second);
s+=v[i];
}
if (s>=l and s<=r) return a;
return rez;
}
int main()
{
int n,l,r;
cin >>n>>l>>r;
vector <int> v;
v.resize (n);
for (int i=1;i<=n;++i){
cin >>v[i-1];
}
vector <int> rez=find_subset (l,r,v);
for (auto x:rez) cout <<x<<' ';
return 0;
}
