제출 #1319884

#제출 시각아이디문제언어결과실행 시간메모리
1319884husseinjuandaJob Scheduling (CEOI12_jobs)C++20
100 / 100
180 ms13868 KiB
#include <bits/stdc++.h>
using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, d, m; cin >> n >> d >> m;
    vector<pair<int, int>> x(m);
    for(int i = 0; i < m; i++){
        cin >> x[i].first;
        x[i].second = i;
    } 
    sort(x.begin(), x.end());
    int low = 1;
    int top = m;
    int ns = 0;
    while(low <= top){
        int mid = (low+top)/2;
        int it = 0;
        for(int i = 1; i <= n; i++){
            for(int y = 0; y < mid && it >= 0 && it < m; y++){
                if(x[it].first > i) break;
                if(i-x[it].first <= d){
                    it++;
                }else{
                    it = -1;
                    break;
                }
            }
        }
        if(it == m){
            top = mid-1;
            ns = mid;
        }else{
            low = mid+1;
        }
    }
    cout << ns << "\n";
    int mid = ns;
    int it = 0;
    for(int i = 1; i <= n; i++){
        for(int y = 0; y < mid && it < m; y++){
            if(x[it].first > i) break;
            cout << x[it].second+1 << " ";
            it++;
        }
        cout << 0 << "\n";
    }
    return 0;
}


#Verdict Execution timeMemoryGrader output
Fetching results...