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 "molecules.h"
#include  <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define allarr(a) a , a + n
#define ll long long
#define ull unsigned long long 
#define pb push_back
#define fastio ios_base::sync_with_stdio(false) ; cin.tie(NULL); cout.tie(NULL)
typedef pair<int, int> pi;
typedef pair<ll,ll> pll; 
typedef pair<int,pi> trp ;
typedef vector<pi> vpi;
typedef vector<pll> vpll ;
// int ab  (int  x ) { return (x>0?x:-x); }
ll sum(int l , int r ,vector<ll>& p){
	if( l== 0) return p[r] ; 
	return p[r]-p[l-1] ;
}
bool in(ll x , ll l , ll r){
	return ( x >= l && x <= r ) ;
}
vector<int> find_subset(int l, int u, vector<int> w) {
    vector<int> result ; 
    int n = w.size() ; 
    vector<ll>pref(n);
    // sort(all(w));
    vpi cost; 
    for(int i =0 ; i < n ; i++ )cost.pb({w[i],i}); 
    sort(all(cost)); 
    pref[0]=cost[0].fi ; 
    for(int i = 1 ; i < n ; i++ )pref[i] += pref[i-1] + 1LL*cost[i].fi ;
    for(int i = 0 ; i < n ; i++ ){
    	int L = i , r = n-1 ; 
    	while ( L <= r){
    		int mid=(L+r)/2 ; 
    		if( in(sum (i,mid,pref),l,u) ){
    			// cout << sum(i,mid,pref)<<endl;
    			for(int j = i ; j <= mid ; j++ )result.pb(cost[j].se) ; 
    			sort(all(result));
    			return result ; 
    		}
    		if( sum(i,mid,pref) < l )L = mid+1; 
    		if( sum(i,mid,pref)>u)r = mid-1 ;
    	}
    }
    return result; 
}
// int main(){
// 	vector<int> v = find_subset(15, 17, {6, 8, 8, 7});
// 	for(int i : v )cout << i << " " ; cout << endl; 
// 	v= find_subset(14, 15, {5, 5, 6, 6});  
// 	for(int i : v )cout << i << " " ; cout << endl; 
// 		v = find_subset(10, 20, {15, 17, 16, 18}); 
// 	for(int i : v )cout << i << " "; 
// }
| # | 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... |