Submission #939486

#TimeUsernameProblemLanguageResultExecution timeMemory
939486ifateenDetecting Molecules (IOI16_molecules)C++14
100 / 100
38 ms7268 KiB
#include <bits/stdc++.h>
#include "molecules.h"
using namespace std;

vector<int> find_subset(int l, int u, std::vector<int> w) {
    vector<int> ans;
    vector<long long> pref(w.size());
    vector<pair<int, int>> arr(w.size());
    for (size_t i = 0; i < w.size(); i++) {
        arr[i] = {w[i], i};
    }

    sort(begin(arr), end(arr));
    int len = -1;
    pref[0] = arr[0].first;
    for (size_t i = 1; i < w.size(); i++) pref[i] = pref[i - 1] + arr[i].first;
    for (size_t i = 0; i < w.size(); i++)
        if (pref[i] > u) {
            len = i;
            break;
        }
    if (len == -1 && pref.back() >= l) {
        ans.resize(w.size());
        iota(begin(ans), end(ans), 0);
        return ans;
    } else if (len == -1) return ans;
    for (size_t i = 0; i < w.size() - len; i++)
        if (l <= pref[i + len] - pref[i] && pref[i + len] - pref[i] <= u) {
            for (size_t j = i + 1; j <= i + len; j++) ans.push_back(arr[j].second);
            return ans;
        }
    if (l <= pref[len - 1] && pref[len - 1] <= u) {
        for (size_t j = 0; j < len; j++) ans.push_back(arr[j].second);
    }
    return ans;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:33:30: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   33 |         for (size_t j = 0; j < len; j++) ans.push_back(arr[j].second);
      |                            ~~^~~~~
#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...