Submission #655039

#TimeUsernameProblemLanguageResultExecution timeMemory
655039benjaminkleynDetecting Molecules (IOI16_molecules)C++17
19 / 100
1 ms212 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int max_n = 100000;

vector<int> find_subset(int l, int u, vector<int> w)
{
    int n = w.size();
    vector<pair<int,int>> W(n);
    for (int i = 0; i < n; i++)
        W[i] = {w[i], i};
    sort(W.begin(), W.end());
    
    set<int> res;
    ll sum = 0;
    for (int i = n - 1; i >= 0 && sum < l; i--)
    {
        sum += W[i].first;
        res.insert(W[i].second);
    }
    for (int i = 0; i < n && sum > u; i++)
    {
        sum += W[i].first - W[n-1-i].first;
        res.erase(W[n-1-i].second);
        res.insert(W[i].second);
    }

    if (sum < l || u < sum)
        return vector<int>(0);

    vector<int> ans;
    for (int i : res)
        ans.push_back(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...