Submission #726451

#TimeUsernameProblemLanguageResultExecution timeMemory
726451jnjwnwnwJob Scheduling (CEOI12_jobs)Java
0 / 100
1093 ms51784 KiB
import java.util.*; public class jobs { private class Pair{ int ind, v; public Pair(int index, int val){ this.ind = index; this.v = val; } public int compareTo(Pair p){ return this.v - p.v; } } private int n, d, m; private Pair[] arr; public static void main(String[] args) { new jobs(); } public jobs(){ Scanner sc = new Scanner(System.in); n = sc.nextInt(); d = sc.nextInt(); m = sc.nextInt(); arr = new Pair[m]; for (int i = 0; i < m; i++) { arr[i] = new Pair(i, sc.nextInt()); } sc.close(); Arrays.sort(arr, (a, b) -> a.compareTo(b)); int lb = 0, ub = m, mid; while (lb < ub){ mid = (lb+ub)/2; if (works(mid)){ub = mid;} else{lb = mid+1;} } System.out.println(lb); int j = 0; for(int i = 0; i < n; i++){ int end = Math.min(m, j + lb); for(; j < end; j++){ if (arr[j].v > i+1){break;} System.out.print(arr[j].ind + 1 + " "); } System.out.println(0); } } public boolean works(int numMachines){ int done = 0; for(int days = 1; days<=(n-d); days++){ int end = Math.min(m, done+numMachines); for (;done<end;done++){ if (arr[done].v > days){ break; } } } return (done==m); } }
#Verdict Execution timeMemoryGrader output
Fetching results...