# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
965028 | 2024-04-18T03:25:29 Z | QuantumPi | Job Scheduling (CEOI12_jobs) | Java 11 | 0 ms | 0 KB |
import java.io.*; import java.util.*; public class JobScheduling { public static int[] nums; public static int d; public static void main(String[] args) { Scanner fin = new Scanner(System.in); int n = fin.nextInt(); d = fin.nextInt(); int m = fin.nextInt(); nums = new int[n-d]; for (int i=0; i<m; i++) { nums[fin.nextInt()-1]++; } int low = 0; int high = 1000000000; while (low < high) { int mid = (low+high)/2; if (works(mid)) { high = mid; } else { low = mid+1; } } System.out.println(low); fin.close(); } public static boolean works(int numMachines) { Queue<Integer> q = new PriorityQueue<>(); int currentDay = 0; for (int i=0; i<nums[currentDay]; i++) { q.add(currentDay); } while (!q.isEmpty()) { for (int i=0; i<numMachines; i++) { if (!q.isEmpty()) { if (q.poll()+d < currentDay) { return false; } } } currentDay++; if (currentDay < nums.length) { for (int i=0; i<nums[currentDay]; i++) { q.add(currentDay); } } } return true; } }