Submission #453202

#TimeUsernameProblemLanguageResultExecution timeMemory
453202osmanallazovJob Scheduling (CEOI12_jobs)C++14
100 / 100
640 ms13648 KiB
#include <bits/stdc++.h>
using namespace std;
#define MAXX 1000005
#define ll long long
pair<int,int>j[MAXX];
int n,m,d;
bool check(int num){
    int cur=0;
    for(int k=0;k<n;k++) {
        for(int i=0;i<num;i++) {
            if(cur<m && j[cur].first<=k+1 && j[cur].first+d>=k+1)cur++;
            else break;
        }
	}
    if(cur==m)return 1;
    else return 0;
}
int main(){
    cin>>n>>d>>m;
    for(int i=0;i<m;i++){
        cin>>j[i].first;
        j[i].second=i+1;
    }
    sort(j,j+m);
    int r=m,l=0,mid,res=-1;
    while(l<=r) {
		mid=(l+r)/2;
		if(check(mid)) {
			res=mid;
			r=mid-1;
		}
		else l=mid+1;
	}
	int cur=0;
	cout<<res<<endl;
	for(ll k=0;k<n;k++){
        for(ll i=0;i<res;i++){
           if(cur<m && j[cur].first<=k+1 && j[cur].first+d>=k+1) {
                cout<<j[cur].second<<" ";
                cur++;
            }
            else break;
        }
        cout<<0<<endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...