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<bits/stdc++.h>
using namespace std;
#include "molecules.h"
typedef pair<int, int> ii;
#define S second
#define F first
std::vector<int> find_subset(int p, int u, std::vector<int> w) {
vector<ii> a;
int n = w.size();
for(int i=0;i<n;i++) a.push_back(ii(w[i], i));
sort(a.begin(), a.end());
int l =0;
int r = n-1;
int su[n];
su[0] = a[0].F;
for(int i=1;i<n;i++) su[i] = su[i-1] + a[i].F;
//for(int i=0;i<n;i++) cout<<su[i]<<" ";
//cout<<endl;
int tot = su[n-1];
for(int i=0;i<n;i++) if(su[i]>u){ r=i, tot = su[i]; break; }
//cout<<tot<<" "<<r<<endl;
while(l<r){
if(tot>=p && tot<=u){
vector<int> ans;
for(int i=l;i<=r;i++){
ans.push_back(a[i].S);
}
return ans;
}
tot-=a[l].F;
l++;
}
if(tot>=p && tot<=u){
vector<int> ans;
for(int i=l;i<=r;i++){
ans.push_back(a[i].S);
}
return ans;
}
return vector<int>();
for(int i=1;i<=n;i++){
int tot = 0;
for(int j=0;j<i;j++){
tot+=a[j].F;
}
for(int j=i;j<n;j++){
if(tot>=l && tot<=u){
vector<int> res;
for(int k=j-i;k<j;k++) res.push_back(a[k].S);
return res;
}
tot-=a[j-i].F;
tot+=a[j].F;
}
if(tot>=l && tot<=u){
vector<int> res;
for(int k=n-i;k<n;k++) res.push_back(a[k].S);
return res;
}
}
return vector<int>();
}
| # | 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... |