import java.util.*;
import java.io.*;
public class JobScheduling {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
Val[] arr = new Val[m];
HashMap<Integer, Integer> switchArr = new HashMap<>();
for (int i = 0; i < m; i++) {
int num = Integer.parseInt(st.nextToken());
arr[i] = new Val(num, i + 1);
}
Arrays.sort(arr, Comparator.comparingInt(s -> s.num));
int curValue = 1;
for (int i = 1; i < m; i++) {
if (arr[i] != arr[i - 1]) {
switchArr.put(curValue, i);
curValue = arr[i].num;
}
}
switchArr.put(arr[m - 1].num, m);
int low = 1;
int high = m;
while (low <= high) {
int mid = (low + high + 1)/2;
if (works(mid, n, arr, d, switchArr)) {
high = mid - 1;
}
else {
low = mid + 1;
}
}
StringBuilder str = new StringBuilder();
str.append(low);
str.append("\n");
int arrInd = 0;
for (int i = 1; i <= n; i++) {
if (arrInd >= arr.length || arr[arrInd].num > i ) {
str.append(0);
str.append("\n");
continue;
}
int prevStart = arrInd;
int posCurJob = arrInd + low;
arrInd = posCurJob;
if (switchArr.containsKey(i)) {
arrInd = Math.min(posCurJob, switchArr.get(i));
}
int end = Math.min(m, arrInd);
for (int j = prevStart; j < end; j++) {
str.append(arr[j].ind + " ");
}
str.append(0);
str.append("\n");
}
System.out.println(str);
br.close();
}
public static boolean works(int mid, int n, Val[] arr, int d, HashMap<Integer, Integer> switchArr) {
int arrInd = 0;
for (int i = 1; i <= n; i++) {
int curJob = arr[arrInd].num;
if (curJob > i) {
continue;
}
if (curJob > i + d) {
return false;
}
int posCurJob = arrInd + mid;
arrInd = posCurJob;
if (switchArr.containsKey(i)) {
arrInd = Math.min(posCurJob, switchArr.get(i));
}
if (arrInd >= arr.length) {
return true;
}
}
return arrInd >= arr.length;
}
static class Val {
int num, ind;
public Val(int num, int ind) {
this.num = num;
this.ind = ind;
}
}
}
Compilation message
jobs.java:3: error: class JobScheduling is public, should be declared in a file named JobScheduling.java
public class JobScheduling {
^
1 error