제출 #1000091

#제출 시각아이디문제언어결과실행 시간메모리
1000091codexistentJob Scheduling (CEOI12_jobs)C++14
16 / 100
354 ms14256 KiB
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = a; i <= b; i++)
#define MAXN 100005

int n, d, m, arr[MAXN], res = 0;
vector<pair<int, int>> req;

int main(){
    cin >> n >> d >> m;
    FOR(i, 1, n) arr[i] = 0;
    FOR(i, 1, m){
        int x; cin >> x;
        arr[x]++;
        req.push_back({x, i});
    }
    sort(req.begin(), req.end());

    multiset<int> s; s.insert(0);
    FOR(i, 1, 1 + d) s.insert(0);

    FOR(i, 1, n){
        res = max(res, *s.rbegin());
        s.erase(s.find(*s.rbegin()));

        FOR(j, 1, arr[i]){
            int k = *s.begin();
            s.erase(s.begin());
            s.insert(k + 1);
        }
        s.insert(0);
    }
    res = max(res, *s.rbegin());

    cout << res << endl;

    int k = -1;
    FOR(i, 1, n){
        int j = 1;
        while(j <= res && (k + 1 < m) && (req[k + 1].first <= i && req[k + 1].first + d <= i)){
            cout << req[k + 1].second << " ";
            j++, k++;
        }

        cout << "0" << endl;
    }
}
/*
8 2 12
1 2 4 2 1 3 5 6 2 3 6 4
*/
#Verdict Execution timeMemoryGrader output
Fetching results...