Submission #840183

#TimeUsernameProblemLanguageResultExecution timeMemory
840183sleepntsheepDetecting Molecules (IOI16_molecules)C++17
0 / 100
1 ms340 KiB
#include <algorithm>
#include <set>
#include <deque>

std::vector<int> find_subset(int l, int u, std::vector<int> w)
{
    std::sort(w.begin(), w.end());
    int s = 0, i;
    std::multiset<int> sub;
    std::deque<int> lo, hi;
    for (i = 0; i < (int)w.size(); ++i) if (s + w[i] < l) s += w[i], lo.push_back(w[i]), sub.insert(i); else break;
    for (int j = i; j < (int)w.size(); ++j) hi.push_back(w[j]);
    std::reverse(hi.begin(), hi.end());
    while (s < l && lo.size() && hi.size())
    {
        int d = hi.front() - lo.front();
        s += d;
        sub.erase(sub.find(lo.front())); sub.insert(hi.front()); hi.pop_front(); lo.pop_front(); 
    }
    if (s < l) return std::vector<int>();
    std::vector<int> result(sub.begin(), sub.end());

    return result;
}
#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...