Submission #879627

#TimeUsernameProblemLanguageResultExecution timeMemory
879627charleehpDetecting Molecules (IOI16_molecules)C++14
100 / 100
43 ms5680 KiB
#include "molecules.h"
#include <algorithm>

using namespace std;

void fillRange(int a, int b, vector< pair<int, int> > &W, vector<int> &ans) {
    for (; a < b; a++) {
        ans.push_back(W[a].second);
    }
}

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    int n = w.size();
    vector< pair<int, int> > W(n);

    for (int i = 0; i < n; i++) {
        W[i] = make_pair(w[i], i);
    }
    sort(W.begin(), W.end());

    vector<int> ans(0);
    long long sum = W[0].first;
    int j = 1;
    for (int i = 0; i < n; i++) {
        while (sum < l && j < n) {
            sum += (long long)W[j].first;
            j++;
        }

        if (l <= sum && sum <= u) {
            fillRange(i, j, W, ans);
            return ans;
        }

        sum -=  (long long)W[i].first;
    }

    return std::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...