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 <algorithm>
using ll = long long;
int const nmax = 200000;
int v[1 + nmax];
int seen[1 + nmax], ind[1 + nmax];
bool compare(int x, int y){
return v[x] < v[y];
}
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
std::vector<int> sol;
int n = w.size();
for(int i = 0; i < n; i++)
v[i] = w[i];
for(int i = 0; i < n; i++)
ind[i] = i;
std::sort(ind, ind + n, compare);
ll sum1 = 0, sum2 = 0;
for(int i = 0; i < n; i++){
int pos1 = ind[i], pos2 = ind[n - 1 - i];
seen[pos1] = 1;
sum1 += w[pos1];
sum2 += w[pos2];
if(sum1 <= u && l <= sum2){
int ptr = 0;
while(sum1 < l){
seen[ind[ptr]] = 0;
seen[ind[n - 1 - ptr]] = 1;
sum1 -= w[ind[ptr]];
sum1 += w[ind[n - 1 - ptr]];
ptr++;
}
for(int i = 0; i < n; i++)
if(seen[i] == 1)
sol.push_back(i);
return sol;
}
}
return sol;
}
# | 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... |