import java.util.*;
public class jobs{
static class Job implements Comparable<Job>{
int pos;
int index;
public Job(int pos,int index){
this.pos=pos;
this.index=index;
}
public int compareTo(Job other){
return this.pos-other.pos;
}
}
static boolean work(int num,int d,Job[]array){
for(int i=0;i<array.length/num;i++){
if(array[i*num].pos+d<i)
return false;
}
return true;
}
public static void main(String[]args){
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int d=scan.nextInt();
int m=scan.nextInt();
Job[]array=new Job[m];
for(int i=0;i<m;i++){
array[i]=new Job(scan.nextInt()-1,i+1);
}
Arrays.sort(array);
int l=1;
int r=m;
while(l<=r){
int mid=(l+r)/2;
if(work(mid,d,array))
r=mid-1;
else
l=mid+1;
}
System.out.println(l);
for(int i=0;i<m;i++){
System.out.print(array[i].index+" ");
if((i+1)%l==0)
System.out.println("0");
}
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |