Submission #959422

#TimeUsernameProblemLanguageResultExecution timeMemory
959422Mystic03Detecting Molecules (IOI16_molecules)C++17
100 / 100
52 ms9484 KiB
#include "molecules.h"
#include <algorithm>

using namespace std;

#define int long long

std::vector<int32_t> find_subset(int32_t l, int32_t u, std::vector<int32_t> w) {
    int p1 = 0;
    int r = 0;
    int n = w.size();
    std::vector<pair<int, int>> ele;
    for (int i = 0; i < n; i++) {
        ele.push_back({ w[i], i });
    }

    sort(ele.begin(), ele.end());
    int currSum = 0;

    while (currSum < l) {
        if (r == ele.size())    return std::vector<int32_t>(0);
        currSum += ele[r].first;
        r++;
    }

    vector<int32_t> res;
    if (currSum <= u) {
        for (int i = 0; i < r; i++) {
            res.push_back(ele[i].second);
        }
        return res;
    }
    r--;
    currSum -= ele[r].first;

    for (int i = r; i < ele.size(); i++) {
        currSum += ele[i].first;
        currSum -= ele[p1++].first;
        if (currSum >= l && currSum <= u) {
            for (int j = p1; j <= i; j++) {
                res.push_back(ele[j].second);
            }
            return res;
        }
    }
    return std::vector<int32_t>(0);
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int32_t, int32_t, std::vector<int>)':
molecules.cpp:21:15: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |         if (r == ele.size())    return std::vector<int32_t>(0);
      |             ~~^~~~~~~~~~~~~
molecules.cpp:36:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for (int i = r; i < ele.size(); i++) {
      |                     ~~^~~~~~~~~~~~
#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...