Submission #867496

#TimeUsernameProblemLanguageResultExecution timeMemory
867496lolismekDetecting Molecules (IOI16_molecules)C++14
100 / 100
54 ms6320 KiB
#include "molecules.h"

#include <algorithm>
#include <iostream>
#include <queue>
#include <cassert>

#define pii pair <int, int>

using namespace std;

vector<int> find_subset(int l, int u, vector<int> w){
    queue <int> dq;
    long long sum = 0;

    vector <pii> v;
    for(int i = 0; i < (int)w.size(); i++){
        v.push_back({w[i], i});
    }

    sort(w.begin(), w.end());
    sort(v.begin(), v.end());

    for(int i = 0; i < (int)w.size(); i++){
        sum += w[i];
        dq.push(i);

        while(!dq.empty() && sum > u){
            sum -= w[dq.front()];
            dq.pop();
        }

        if(l <= sum && sum <= u){
            vector <int> ans;
            while(!dq.empty()){
                ans.push_back(v[dq.front()].second);
                dq.pop();
            }

            return ans;
        }
    }

    return {};
}

/*
4 15 17
6 8 8 7
*/

#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...