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... |