# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1241134 | erering | Detecting Molecules (IOI16_molecules) | C++20 | 41 ms | 6840 KiB |
#include <bits/stdc++.h>
#include "molecules.h"
using namespace std;
#define pb push_back
std::vector<int> find_subset(int l, int u, std::vector<int> w) {
vector<pair<int,int>> vec;
for(int i=0;i<w.size();i++)vec.pb({w[i],i});
sort(vec.begin(),vec.end());
long long sum=0;
long long suff[w.size()];
for(int i=vec.size()-1;i>=0;i--){
suff[i]=vec[i].first;
if(i<vec.size()-1)suff[i]+=suff[i+1];
}
vector<int> ans;
for(int i=0;i<vec.size();i++){
if(sum>=l && sum<=u)return ans;
int le=i,ri=vec.size()-1;
while(le<ri){
int mid=(le+ri)/2;
if(suff[mid]+sum>u)le=mid+1;
else ri=mid;
}
if(sum+suff[le]>=l && sum+suff[le]<=u){
for(int j=vec.size()-1;j>=le;j--)ans.pb(vec[j].second);
return ans;
}
sum+=vec[i].first;
ans.pb(vec[i].second);
}
return {};
}
Compilation message (stderr)
# | 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... |