Submission #281867

#TimeUsernameProblemLanguageResultExecution timeMemory
281867A02Detecting Molecules (IOI16_molecules)C++14
0 / 100
1 ms384 KiB
#include "molecules.h"
#include <vector>
#include <iostream>
#include <set>
#include <algorithm>
#include <utility>

using namespace std;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {

    sort(w.begin(), w.end());

    long long total = 0;
    multiset<int> result;

    int i = 0;

    for (; i < w.size() && total + w[i] <= u; i++){
        total += w[i];
        result.insert(i);
    }


    int result_size = i;

    long long max_total = 0;

    for (int j = w.size() - 1; j >= w.size() - result_size; j--){
        max_total += w[j];
    }

    if (max_total < l){
        return vector<int> (0);
    }

    int current_lower_max = i - 1;

    while (total < l){

        result.erase(result.lower_bound(current_lower_max));
        result.insert(w.size() - 1 - (i - 1 - current_lower_max));
        total += w[w.size() - 1 - (i - current_lower_max)];
        total -= w[current_lower_max];

        current_lower_max--;
    }

    vector<int> r;
    for (multiset<int>::iterator it = result.begin(); it != result.end(); it++){
        r.push_back(*(it));
    }

    return r;
}

Compilation message (stderr)

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:19:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for (; i < w.size() && total + w[i] <= u; i++){
      |            ~~^~~~~~~~~~
molecules.cpp:29:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |     for (int j = w.size() - 1; j >= w.size() - result_size; j--){
      |                                ~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...