제출 #466892

#제출 시각아이디문제언어결과실행 시간메모리
466892gordonsunJob Scheduling (CEOI12_jobs)C++14
0 / 100
597 ms15456 KiB
#include<bits/stdc++.h>
using namespace std;
pair<int, int> p[1000005];

int N, D, M;
bool check(int machines){
    int m[machines];
    memset(m,0,sizeof(m));
    int index = 0;
    for (int i = 0; i < N; i++){
        if (index == machines){
            index = 0;
        }
        m[index] = max(m[index]+1,p[i].first+1);
        if (m[index] > p[i].first+D){
            return false;
        }
        index++;
    }
    return true;
}
int main(){
    cin >> N >> D >> M;
    for (int i = 0; i < M; i++){
        cin >> p[i].first;
        p[i].second = i+1;
    }
    sort(p,p+M);
    int l = 0;
    int r = M;
    while (l != r){
        int mid = (l+r)/2;
        if (check(mid)){
            r = mid;
        }
        else{
            l = mid+1;
        }
    }
    cout << l << endl;
    int ntracker = 0;
    int index = 0;
    while(true){
        if (ntracker == N){
            break;
        }
        for (int j = 0; j < l; j++){
            if (index == M){
                break;
            }
            cout << p[index].second << " ";
            index++;
        }
        cout << 0 << endl;
        ntracker++;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...