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 <vector>
#include <cassert>
#include <algorithm>
using namespace std;
bool check(long long l,long long u,long long val) {
return val>=l&&val<=u;
}
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
int n=w.size();
vector<pair<int,int>> tbl(n);
vector<long long> qsl(n);
vector<long long> qsr(n);
for (int i=0;i<n;i++) {
tbl[i]={w[i],i};
}
sort(tbl.begin(),tbl.end());
for (int i=0;i<n;i++) {
qsl[i]=tbl[i].first;
if (i) qsl[i]+=qsl[i-1];
}
for (int i=n-1;i>=0;i--) {
qsr[i]=tbl[i].first;
if (i<n-1) qsr[i]+=qsr[i+1];
}
vector<int> ans;
long long ll;
long long rr;
for (int i=1;i<=n;i++) {
if (qsr[n-i]<l) continue;
if (qsl[i-1]>u) continue;
for (int j=0;j<=i;j++) {
ll=j?qsl[j-1]:0;
rr=(j==i)?0:qsr[n-i+j];
if (check(l,u,ll+rr)) {
for (int k=0;k<j;k++) {
ans.push_back(tbl[k].second);
}
for (int k=0;k<i-j;k++) {
ans.push_back(tbl[n-k-1].second);
}
return ans;
}
}
assert(false);
}
return std::vector<int>(0);
}
# | 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... |