Submission #1155065

#TimeUsernameProblemLanguageResultExecution timeMemory
1155065AlgorithmWarriorJob Scheduling (CEOI12_jobs)C++20
40 / 100
203 ms13716 KiB
#include <bits/stdc++.h>

using namespace std;

int const MAX=1e6+5;
int n,d,m;
struct request{
    int day,pos;
    bool operator<(request ot){
        return day<ot.day;
    }
}req[MAX];
int capacity;

void read(){
    cin>>n>>d>>m;
    int i;
    for(i=1;i<=m;++i){
        cin>>req[i].day;
        req[i].pos=i;
    }
    sort(req+1,req+m+1);
}

bool check(int cap){
    int i;
    int id=1;
    for(i=1;i<=n;++i){
        int used=0;
        while(id<=m && used<cap && req[id].day<=i){
            ++used;
            ++id;
        }
    }
    return (id>m);
}

int bin_search(){
    /// (]
    int st=0,dr=m;
    while(dr-st>1){
        int mij=(st+dr)/2;
        if(check(mij))
            dr=mij;
        else
            st=mij;
    }
    capacity=dr;
    return dr;
}

void plan_work(){
    int i;
    int id=1;
    for(i=1;i<=n;++i){
        int used=0;
        while(id<=m && used<capacity && req[id].day<=i){
            cout<<req[id].pos<<' ';
            ++used;
            ++id;
        }
        cout<<"0\n";
    }
}

int main()
{
    read();
    cout<<bin_search()<<'\n';
    plan_work();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...