Submission #1138415

#TimeUsernameProblemLanguageResultExecution timeMemory
1138415mrsmartypantsJob Scheduling (CEOI12_jobs)C++17
Compilation error
0 ms0 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Request {
    int id, day;
    Request(int id, int day) : id(id), day(day) {}
};

struct Return {
    bool worked;
    vector<vector<int>> schedule;
    Return(bool worked, vector<vector<int>> schedule) : worked(worked), schedule(schedule) {}
};

vector<vector<int>> schedule;
int N, D, M;

Return test(int numMachines, vector<Request>& jobs) {
    vector<vector<int>> schedule(N);

    int reqNum = 0;
    for (int day = 1; day <= N; ++day) {
        for (int j = 0; j < numMachines; ++j) {
            if (reqNum >= M || jobs[reqNum].day > day) break;
            if (jobs[reqNum].day + D >= day) {
                schedule[day - 1].push_back(jobs[reqNum].id);
                ++reqNum;
            } else {
                return Return(false, schedule);
            }
            if (reqNum == M) return Return(true, schedule);
        }
    }

    return Return(false, schedule);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> N >> D >> M;
    vector<Request> jobs(M);

    for (int i = 0; i < M; ++i) {
        cin >> jobs[i].day;
        jobs[i].id = i + 1;
    }

    sort(jobs.begin(), jobs.end(), [](const Request& a, const Request& b) {
        return a.day < b.day;
    });

    int lo = 1, hi = M + 1;

    while (lo < hi) {
        int mid = lo + (hi - lo) / 2;
        Return r = test(mid, jobs);

        if (r.worked) {
            hi = mid;
            schedule = r.schedule;
        } else {
            lo = mid + 1;
        }
    }

    cout << lo << "\n";
    for (int i = 0; i < N; ++i) {
        for (int idx : schedule[i]) {
            cout << idx << " ";
        }
        cout << "0\n";
    }

    return 0;
}

Compilation message (stderr)

In file included from /usr/include/c++/11/bits/alloc_traits.h:33,
                 from /usr/include/c++/11/ext/alloc_traits.h:34,
                 from /usr/include/c++/11/bits/basic_string.h:40,
                 from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/ostream:38,
                 from /usr/include/c++/11/iostream:39,
                 from jobs.cpp:1:
/usr/include/c++/11/bits/stl_construct.h: In instantiation of 'void std::_Construct(_Tp*, _Args&& ...) [with _Tp = Request; _Args = {}]':
/usr/include/c++/11/bits/stl_uninitialized.h:579:18:   required from 'static _ForwardIterator std::__uninitialized_default_n_1<_TrivialValueType>::__uninit_default_n(_ForwardIterator, _Size) [with _ForwardIterator = Request*; _Size = long unsigned int; bool _TrivialValueType = false]'
/usr/include/c++/11/bits/stl_uninitialized.h:640:20:   required from '_ForwardIterator std::__uninitialized_default_n(_ForwardIterator, _Size) [with _ForwardIterator = Request*; _Size = long unsigned int]'
/usr/include/c++/11/bits/stl_uninitialized.h:704:44:   required from '_ForwardIterator std::__uninitialized_default_n_a(_ForwardIterator, _Size, std::allocator<_Tp>&) [with _ForwardIterator = Request*; _Size = long unsigned int; _Tp = Request]'
/usr/include/c++/11/bits/stl_vector.h:1606:36:   required from 'void std::vector<_Tp, _Alloc>::_M_default_initialize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = Request; _Alloc = std::allocator<Request>; std::vector<_Tp, _Alloc>::size_type = long unsigned int]'
/usr/include/c++/11/bits/stl_vector.h:512:9:   required from 'std::vector<_Tp, _Alloc>::vector(std::vector<_Tp, _Alloc>::size_type, const allocator_type&) [with _Tp = Request; _Alloc = std::allocator<Request>; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::allocator_type = std::allocator<Request>]'
jobs.cpp:46:27:   required from here
/usr/include/c++/11/bits/stl_construct.h:119:7: error: no matching function for call to 'Request::Request()'
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:9:5: note: candidate: 'Request::Request(int, int)'
    9 |     Request(int id, int day) : id(id), day(day) {}
      |     ^~~~~~~
jobs.cpp:9:5: note:   candidate expects 2 arguments, 0 provided
jobs.cpp:7:8: note: candidate: 'constexpr Request::Request(const Request&)'
    7 | struct Request {
      |        ^~~~~~~
jobs.cpp:7:8: note:   candidate expects 1 argument, 0 provided
jobs.cpp:7:8: note: candidate: 'constexpr Request::Request(Request&&)'
jobs.cpp:7:8: note:   candidate expects 1 argument, 0 provided