Submission #875566

#TimeUsernameProblemLanguageResultExecution timeMemory
875566rajatJob Scheduling (CEOI12_jobs)Java
Compilation error
0 ms0 KiB
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 (stderr)

jobs.java:3: error: class JobScheduling is public, should be declared in a file named JobScheduling.java
public class JobScheduling {
       ^
1 error