Submission #159285

#TimeUsernameProblemLanguageResultExecution timeMemory
159285rama_pangDetecting Molecules (IOI16_molecules)C++14
100 / 100
68 ms4856 KiB
#include "molecules.h"
#include <bits/stdc++.h>
using namespace std;
using lint = long long;

vector<int> find_subset(int l, int u, vector<int> w) {
    auto cmp = [&](int a, int b) {
        return w[a] < w[b];
    };

    vector<int> ord(w.size());
    iota(ord.begin(), ord.end(), 0);
    sort(ord.begin(), ord.end(), cmp);
    lint target = w[ord[0]];
    vector<int> res;
    int le = 0, ri = 0;

    while (le < w.size() && ri < w.size()) {
        if (l <= target && target <= u) {
            for (int i = le; i <= ri; i++) res.push_back(ord[i]);
            break;
        } else if (target < l) {
            target += w[ord[++ri]];
        } else if (target > u) {
            target -= w[ord[le++]];
        }
    }
    return res;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:18:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (le < w.size() && ri < w.size()) {
            ~~~^~~~~~~~~~
molecules.cpp:18:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while (le < w.size() && ri < w.size()) {
                             ~~~^~~~~~~~~~
#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...