Submission #297194

#TimeUsernameProblemLanguageResultExecution timeMemory
297194jeroenodbDetecting Molecules (IOI16_molecules)C++14
19 / 100
1 ms416 KiB
#include "molecules.h"
#include <algorithm>
using namespace std;

struct we{
    int w, id;
    bool operator<(const we& o) {
        return w<o.w;
    }
};

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    int n = w.size();
    vector<we> mw;
    mw.reserve(n); for(int i=0;i<n;++i)  mw.push_back({w[i],i});
    sort(mw.begin(),mw.end());
    
    long long sum=0;
    int i;
    for(i=0;i<n;++i) {
        sum+=mw[i].w;
        if(sum>=l) break;
    }
    if(sum<l) return vector<int>(0);
    if(sum>=l and sum<=u) {
        vector<int> ans;
        for(int k=0;k<=i;++k) {
            ans.push_back(mw[k].id);
        }
        return ans;
    }
    sum-=mw[i].w;
    
    for(int j=0;n-1-j>=i;++j) {
        sum-=mw[j].w;
        sum+=mw[n-1-j].w;
        if(sum>=l and sum <=u) {
            vector<int> ans;
            for(int k=j+1;k<i;++k) {
                ans.push_back(mw[k].id);
            }
            for(int k=n-j-1;k<n;++k) {
                ans.push_back(mw[k].id);
            }
            return ans;
        }
    }
    return vector<int>(0);

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...