제출 #775459

#제출 시각아이디문제언어결과실행 시간메모리
775459kirakaminski968Job Scheduling (CEOI12_jobs)C++17
0 / 100
394 ms17940 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6+5;
vector<pair<int,int>> jobs(MAXN);
int N,M,D;
bool check(int x){
    for(int i = 1;i<=M;++i){
        if(i/x > jobs[i].first+D) return false;
    }
    if(M/x > N) return false;
    return true;
}
int main()
{
    cin >> N >> D >> M;
    jobs.resize(M+1);
    for(int i = 1;i<=M;++i){cin >> jobs[i].first; jobs[i].second = i;}
    sort(jobs.begin(),jobs.end());
    //for(auto p : jobs) cout << p.first << " ";
    //cout << "\n";
    int lo = 1, hi = MAXN;
    while(lo < hi){
        int mid = (lo+hi)/2;
        if(check(mid)){
            hi = mid;
        }
        else{
            lo = mid+1;
        }
    }
    cout << lo << "\n";
    int cur = 1;
    for(int i = 1;i<=M;++i){
        if(i/lo == cur+1){
            cout << "0 \n" << jobs[i].second << " ";
            cur++;
        }
        else cout << jobs[i].second << " ";
    }
    cout << "\n";
    while(cur < N){
        cout << "0\n";
        cur++;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...