Submission #419247

#TimeUsernameProblemLanguageResultExecution timeMemory
419247someoneDetecting Molecules (IOI16_molecules)C++14
69 / 100
52 ms6288 KiB
#include <bits/stdc++.h>
#include "molecules.h"
//using namespace std;

struct Molecule {
    int val, i;
};

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    std::vector<Molecule> mol;
    int n = w.size(),
        sum[n+1];
    sum[0] = 0;
    for(int i = 0; i < n; i++)
        mol.push_back({w[i], i});
    sort(mol.begin(), mol.end(),
    [](Molecule a, Molecule b) {
        return a.val < b.val;
    });
    for(int i = 0; i < n; i++)
        sum[i+1] = sum[i] + mol[i].val;
    std::vector<int> ans;
    bool hasAnswer = false;
    for(int i = 1; i <= n && !hasAnswer; i++) {
        int mini = sum[i],
            maxi = sum[n] - sum[n-i];
        if(mini <= u && l <= maxi) {
            for(int deb = 0, fin = i; fin <= n && !hasAnswer; deb++, fin++) {
                int s = sum[fin] - sum[deb];
                if(l <= s && s <= u) {
                    hasAnswer = true;
                    for(int j = deb; j < fin; j++)
                        ans.push_back(mol[j].i);
                }
            }
        }
    }
    return ans;
}
#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...