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