#include "molecules.h"
#include "bits/stdc++.h"
using namespace std;
const long long N = 2e5 + 5;
long long pr[N];
long long get(long long l, long long r){
if(l == 0)return pr[r];
return pr[r] - pr[l - 1];
}
vector < int > find_subset(int l, int u, vector < int > w){
long long n = w.size();
map < long long , vector < long long > > id;
for(long long i = 0; i < w.size(); i++)
id[w[i]].push_back(i);
sort(w.begin(), w.end());
pr[0] = w[0];
for(long long i = 1; i < n; i++)
pr[i] = pr[i - 1] + w[i];
for(long long i = 0; i < n; i++){
long long lo = i, hi = n - 1, j = i;
while(hi >= lo){
long long mid = (lo + hi) >> 1;
if(w[mid] - w[i] <= u - l){
lo = mid + 1;
j = mid;
}
else hi = mid - 1;
}
long long z = i;
lo = i, hi = j;
while(hi >= lo){
long long mid = (lo + hi) >> 1;
if(get(i, mid) >= l){
hi = mid - 1;
z = mid;
}
else lo = mid + 1;
}
long long ans = get(i, z);
if(ans >= l && ans <= u){
vector < long long > y;
vector < int > rs;
for(long long k = i; k <= z; k++)
y.push_back(w[k]);
for(auto i : y){
rs.push_back(id[i].back());
id[i].pop_back();
}
reverse(rs.begin(), rs.end());
return rs;
}
}
return {};
}
Compilation message (stderr)
molecules.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
molecules_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~| # | 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... |