Submission #107998

#TimeUsernameProblemLanguageResultExecution timeMemory
107998FiloSanzaDetecting Molecules (IOI16_molecules)C++14
0 / 100
3 ms400 KiB
#include "molecules.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> build(multiset<int>& el, const vector<int>& w){
    vector<int> sol;
    for(int i=0; i<w.size(); i++)if(el.count(w[i])){
        el.erase(w[i]);
        sol.push_back(i);
    }
    return sol;
}

vector<int> find_subset(int l, int u, vector<int> w) {
    sort(w.begin(), w.end());
    long long sum = 0;

    multiset<int> el;
    for(auto i : w) sum += 1LL*i, el.insert(i);

    while(!el.empty()){
        if(sum < l) return vector<int>(0);
        if(sum >= l && sum <= u) return build(el, w);
        long long diff = sum - u;
        auto it = el.lower_bound(diff);

        if(it == el.end())
            it = prev(el.end());
        sum -= *it;
        el.erase(it);
    }

    return vector<int>(0);
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> build(std::multiset<int>&, const std::vector<int>&)':
molecules.cpp:8:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<w.size(); i++)if(el.count(w[i])){
                  ~^~~~~~~~~
#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...