Submission #1162294

#TimeUsernameProblemLanguageResultExecution timeMemory
1162294PikachudoraEHEJob Scheduling (CEOI12_jobs)C++20
0 / 100
226 ms17540 KiB
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int mem[N];vector<int>a;int n,d,m,ma2=0;
bool chk(int vv){
    //cout<<"This is vv : "<<vv<<"\n";
    int khang = 1;
    int v = vv;
    for(int i=1;i<=n;i++){
        //cout<<i<<"\n";
        v=vv;
        if(khang<i-d){
            return false;
        }
        while(v>0){
            if(mem[khang]<=v){
                v-=mem[khang];
                khang++;
                //cout<<"khang = "<<khang<<"\n";
                if(v<0)break;
                if(khang>i){
                   break;
                }
            }
            else{
                mem[khang]-=v;
                break;
            }
        }
    }
    if(khang>n)return true;
return false;
}
int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>d>>m;int ma = 0;
    a.resize(m);
    for(int i=0;i<m;i++){
        cin>>a[i];
        mem[a[i]]++;
        ma=max(ma,mem[a[i]]);
        ma2=max(ma2,a[i]);
    }
    int l=1,r=ma;
    while(l<r){
        int mid = (l+r)/2;
        if(chk(mid)){
            r=mid;
        }
        else l = mid+1;
    }
    cout<<l<<"\n";
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
    for(int i=1;i<=m;i++){
        q.push({a[i-1],i});
    }
    bool can=true;
    for(int i=1;i<=n;i++){
        int dd=0;
        while(!q.empty() && q.top().first<=i && dd<l){
            cout << q.top().second << " ";
            q.pop();
            dd++;
        }
        cout << "0\n";
    }
return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...