Submission #1157535

#TimeUsernameProblemLanguageResultExecution timeMemory
1157535ocasuJob Scheduling (CEOI12_jobs)C++20
40 / 100
1095 ms16504 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
    int n,d,m; cin>>n>>d>>m;
    vector<vector<int>> x(n+1);
    for (int i=1; i<=m; i++) {
        int z; cin>>z;
        x[z].push_back(i);
    }
    
    int l = 1, r = 1e6+5; 
    while (l != r) { 
        int mid = (l+r)/2; 
        //mid=1;
        bool ok=true;
        set<pair<int,int>> s;
        for (int i=1; i<=n; i++){
            for (auto j: x[i]){
                s.insert({i,j});
            }
            for (int i=1; i<=mid and !s.empty(); i++){
                s.erase(s.begin());
            }
            if (!s.empty() and (i-(*s.begin()).first > d)){
                ok=false;
                break;
            }
        }
        //cout<<(int)(s.size())<<'\n';
        if (!s.empty()) ok=false;

        //cout<<ok<<'\n';
        //break;

        if (ok) { 
            r = mid; 
        } 
        else { 
            l = mid+1; 
        } 
    }
    int ans=l;
    cout<<ans<<'\n';
    set<pair<int,int>> s;
    for (int i=1; i<=n; i++){
        for (auto j: x[i]){
            s.insert({i,j});
        }
        for (int i=1; i<=ans and !s.empty(); i++){
            cout<<(*s.begin()).second<<' ';
            s.erase(s.begin());
        }
        cout<<0<<'\n';
    }

}
#Verdict Execution timeMemoryGrader output
Fetching results...