답안 #1115280

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1115280 2024-11-20T09:47:25 Z Zflop Detecting Molecules (IOI16_molecules) C++14
컴파일 오류
0 ms 0 KB
#pragma once
#include <bits/stdc++.h>
#include <vector>
using namespace std;
const int NMAX = (int)1e3 * 2;

std::vector<int> find_subset(int l, int u, std::vector<int> w) {
    vector<pair<int,int>>p;
    for (int i = 0; i < w.size();++i)
        p.push_back({w[i],i});
    sort(p.begin(),p.end());
    set<pair<int,int>>m;
    vector<int>v1;
    int s = 0;
    int i = w.size() - 1;
    for (; i >= 0 && s <= u;--i) {
        if (s >= l && s <= u) return v1;
        m.insert(p[i]);
        v1.push_back(p[i].second);
        s += p[i].first;
    }
    if (s < l) return {};
    if (s <= u && s >= l) return v1;
    int j = i;
    i = 0;
    while (i <= j) {
        auto a = *m.begin();
        s -= a.first;
        s += p[i].first;
        m.erase(a);
        m.insert(p[i]);
        if (s <= u && s >= l) {
            vector<int>v;
            while (m.size()) {
                auto b = *m.begin();
                v.push_back(b.second);
                m.erase(b);
            }
            return v;
        }
        ++i;
    }
    while (s > u) {
        auto a = *m.begin();
        m.erase(m.begin());
        s -= a.first;
    }
    vector<int>ceva;
    while (m.size()) {
        ceva.insert(*m.begin().second);
        m.erase(m.begin());
    }
    if (s >= l) return ceva;
    return {};
}

Compilation message

molecules.cpp:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:9:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for (int i = 0; i < w.size();++i)
      |                     ~~^~~~~~~~~~
molecules.cpp:50:32: error: 'std::set<std::pair<int, int> >::iterator' {aka 'std::_Rb_tree<std::pair<int, int>, std::pair<int, int>, std::_Identity<std::pair<int, int> >, std::less<std::pair<int, int> >, std::allocator<std::pair<int, int> > >::const_iterator'} has no member named 'second'
   50 |         ceva.insert(*m.begin().second);
      |                                ^~~~~~