Submission #335151

#TimeUsernameProblemLanguageResultExecution timeMemory
335151blueDetecting Molecules (IOI16_molecules)C++17
100 / 100
56 ms6508 KiB
#include "molecules.h"
#include <vector>
#include <algorithm>
using namespace std; 

vector<long long> W(200001);
int n;

vector<int> find_subset(int l, int u, vector<int> w)
{
    n = w.size();

    int i, x;
    for(i = 0; i < n; i++) W[i] = w[i];

    vector<int> I(n);
    for(i = 0; i < n; i++) I[i] = i;

    sort(I.begin(), I.end(), [] (int x, int y)
    {
        return W[x] < W[y];
    });

    vector<int> res;

    long long a = 0, b = -1;
    long long sum = 0;
    while(1)
    {
        if(sum < l)
        {
            if(b == n-1) return res;
            else
            {
                b++;
                sum += W[I[b]];
            }
        }
        else if(sum > u)
        {
            a++;
            sum -= W[I[a-1]];
        }
        else
        {
            for(x = a; x <= b; x++) res.push_back(I[x]);
            return res;
        }
    }
}
#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...