Submission #419260

#TimeUsernameProblemLanguageResultExecution timeMemory
419260JeanBombeurDetecting Molecules (IOI16_molecules)C++17
100 / 100
56 ms6076 KiB
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include "molecules.h"
using namespace std;

vector<int> find_subset(int mini, int maxi, vector<int> Tailles) {
    
    long long inf = mini, sup = maxi;
    
    vector <pair <long long, int>> Molecules;
    
    int nbMolecules = 0;
    
    for (int a : Tailles)
    {
        Molecules.push_back({(long long)a, nbMolecules ++});
    }
    sort(Molecules.begin(), Molecules.end());
    
    long long sum = 0;
    
    int gauche = 0, droite = 0;
    while (droite < nbMolecules && sum + Molecules[droite].first <= sup)
    {
        sum += Molecules[droite ++].first;
    }
    
    while (droite < nbMolecules && sum < inf)
    {
        sum += Molecules[droite ++].first - Molecules[gauche ++].first;
    }
    
    if (droite == nbMolecules && sum < inf)
        return vector<int>(0);
    
    vector <int> ans;
    for (int i = gauche; i < droite; i ++)
    {
        ans.push_back(Molecules[i].second);
    }
    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...