제출 #107195

#제출 시각아이디문제언어결과실행 시간메모리
107195popovicirobertDetecting Molecules (IOI16_molecules)C++14
100 / 100
187 ms15196 KiB
#include "molecules.h"
#include <bits/stdc++.h>
#define ll long long

using namespace std;

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

    vector < pair <int, int> > arr(w.size());
    for(int i = 0; i < w.size(); i++) {
        arr[i] = {w[i], i};
    }

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

    multiset <ll> mst;
    mst.insert(0);

    ll sum = 0;
    ll sl, sr = -1;
    for(auto it : arr) {
        sum += it.first;

        auto cur = mst.lower_bound(sum - u);
        if(cur != mst.end() && *cur <= sum - l) {
            sl = *cur;
            sr = sum;
            break;
        }

        mst.insert(sum);
    }

    vector <int> sol;
    if(sr == -1) {
        return sol;
    }

    sum = 0;

    for(int i = 0; i < arr.size(); i++) {
        sum += arr[i].first;

        if(sum > sl) {
            sol.push_back(arr[i].second);
        }

        if(sum == sr) {
            break;
        }

    }

    return sol;

}

컴파일 시 표준 에러 (stderr) 메시지

molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:10:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < w.size(); i++) {
                    ~~^~~~~~~~~~
molecules.cpp:41:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < arr.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...