제출 #1185015

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

#define endl "\n"
#define int long long

const int TAILLEMAXI=100*1000+2;
vector<int> req[TAILLEMAXI];

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int nbjours,delaimax,nbreq;
    cin>>nbjours>>delaimax>>nbreq;
    for (int i=0;i<nbreq;i++){
        int val;
        cin>>val;
        req[val].push_back(i+1);
    }
    int deb=0,fin=nbreq;
    while (deb<fin){
        int milieu=(deb+fin)/2;
        int pb=0;
        int j=0,encore=0;
        //cout<<milieu<<endl;
        for (int i=0;i<nbjours;i++){
            if (j<i){
                j=i;
                encore=0;
            }
            j+=(req[i].size()+encore)/milieu;
            encore=(req[i].size()+encore)%milieu;
            if (j+min(encore,(int)1)-1>i+delaimax){
                pb=1;
            }
        }
        if (pb==0){
            fin=milieu;
        }
        else {
            deb=milieu+1;
        }
    }
    cout<<deb<<endl;
    for (int i=0;i<nbjours;i++){
        for (int j:req[i]){
            cout<<j<<" ";
        }
        cout<<0<<endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...